[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XC279Q6XPYQVCAC4ASKKR7":3,"skill-same:01M6XC279Q6XPYQVCAC4ASKKR7":67},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":13,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M6XC279Q6XPYQVCAC4ASKKR7","spreadsheet-python-file-exec",null,"Execute Python scripts from files for reliable spreadsheet operations, avoiding heredoc issues with shell_agent","UF-gzj\u002Fopenspace-claude-evolution","UF-gzj","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F272393507?v=4","01M6XBCZB755P01VVYGQWPYZY3","01M6XBCZFJA5AREA17WGETA3FW",0,"MIT","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fspreadsheet-direct-python-enhanced\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],"python","file","spreadsheet","exec","spreadsheet python file exec","issues","shell","execute","operations","files","scripts","with","for","2026-11-10 10:12:30",false,"---\nname: spreadsheet-python-file-exec\ndescription: Execute Python scripts from files for reliable spreadsheet operations, avoiding heredoc issues with shell_agent\n---\n\n# Direct Python Execution for Spreadsheet Tasks\n\n## When to Use This Skill\n\nUse direct `run_shell` with Python scripts for spreadsheet operations when:\n\n- Reading or writing complex Excel files with multiple sheets\n- Applying formulas, formatting, or data transformations\n- Working with `openpyxl`, `pandas`, or similar libraries\n- The operation involves multiple steps that could exceed agent step limits\n- You need precise control over error handling and debugging\n- Complex scripts benefit from file-based execution for better reliability\n\n## Why Direct Execution?\n\nThe `shell_agent` tool can:\n\n- Hit maximum step limits on complex multi-step operations\n- Produce unexplained errors on formatting operations\n- Fail on intricate spreadsheet reads\u002Fwrites due to iterative parsing\n- Fail to parse heredoc syntax correctly, causing 'unknown error' failures\n\nDirect `run_shell` with Python is more reliable because it:\n\n- Executes in a single step with no iteration limits\n- Provides clearer, immediate error messages\n- Handles complex operations without step constraints\n- Gives full control over library imports and execution flow\n- Writing scripts to `.py` files first avoids shell_agent parsing issues with heredocs\n\n## How to Use\n\n### Recommended Pattern: Write Script to File First\n\nFor complex multi-line scripts, especially when using shell_agent as executor:\n\n```bash\n# Step 1: Write the Python script to a file\ncat > process_spreadsheet.py \u003C\u003C 'EOF'\nimport openpyxl\nfrom openpyxl import Workbook\n\n# Your spreadsheet code here\nwb = openpyxl.load_workbook('file.xlsx')\n# ... operations ...\nwb.save('output.xlsx')\nprint('Success')\nEOF\n\n# Step 2: Execute the script\npython3 process_spreadsheet.py\n```\n\n### Alternative Pattern: Inline Heredoc (Simple Scripts Only)\n\nFor short, simple scripts when NOT using shell_agent as the executor:\n\n```bash\npython3 \u003C\u003C 'EOF'\nimport openpyxl\nfrom openpyxl import Workbook\n\n# Your spreadsheet code here\nwb = openpyxl.load_workbook('file.xlsx')\n# ... operations ...\nwb.save('output.xlsx')\nprint('Success')\nEOF\n```\n\n### Example 1: Read and Transform Excel Data\n\n**Write to file first, then execute:**\n\n```python\nimport pandas as pd\n\n# Load data from specific sheet\ndf = pd.read_excel('input.xlsx', sheet_name='Revenue')\n\n# Apply transformations\ndf['Net_Revenue'] = df['Gross_Revenue'] * (1 - df['Tax_Rate'])\n\n# Save results\ndf.to_excel('output.xlsx', index=False, sheet_name='Processed')\n```\n\n### Example 2: Multi-Sheet Operations with openpyxl\n\n**Write to file first, then execute:**\n\n```python\nfrom openpyxl import load_workbook\n\nwb = load_workbook('tour_data.xlsx')\n\n# Iterate through sheets\nfor sheet_name in wb.sheetnames:\n    ws = wb[sheet_name]\n    # Apply formatting or calculations\n    for row in ws.iter_rows(min_row=2, max_col=5):\n        # Process cells\n        pass\n\nwb.save('tour_data_processed.xlsx')\n```\n\n### Example 3: Complex Formatting Operations\n\n**Write to file first, then execute:**\n\n```python\nfrom openpyxl import load_workbook\nfrom openpyxl.styles import Font, PatternFill, Alignment\n\nwb = load_workbook('report.xlsx')\nws = wb.active\n\n# Apply header styling\nheader_fill = PatternFill(start_color='4472C4', fill_type='solid')\nheader_font = Font(bold=True, color='FFFFFF')\n\nfor cell in ws[1]:\n    cell.fill = header_fill\n    cell.font = header_font\n    cell.alignment = Alignment(horizontal='center')\n\nwb.save('report_formatted.xlsx')\n```\n\n### Example 4: Error Handling Pattern\n\n**Write to file first, then execute:**\n\n```python\nimport sys\nfrom openpyxl import load_workbook\n\ntry:\n    wb = load_workbook('data.xlsx')\n    ws = wb.active\n    \n    # Your operations here\n    value = ws['A1'].value\n    \n    wb.save('output.xlsx')\n    print(f\"Success: Processed {ws.max_row} rows\")\n    \nexcept Exception as e:\n    print(f\"Error: {str(e)}\", file=sys.stderr)\n    sys.exit(1)\n```\n\n## Best Practices\n\n1. **Prefer file-based execution** for complex scripts: write to `.py` file first, then execute via `run_shell`\n2. **Import only needed libraries** to reduce execution time\n3. **Print clear success\u002Ferror messages** for debugging\n4. **Save intermediate results** for complex multi-step transformations\n5. **Test with small data** before scaling to large spreadsheets\n6. **Use pandas for data manipulation** and openpyxl for formatting when both are needed\n7. **Clean up temporary script files** after execution if they won't be reused\n\n## When NOT to Use This Skill\n\n- Simple single-cell reads\u002Fwrites (use shell_agent or basic commands)\n- Operations that require interactive user input\n- Tasks where you need the agent to iteratively refine the approach\n\n## Common Libraries\n\n| Library | Best For |\n|---------|----------|\n| `openpyxl` | Reading\u002Fwriting .xlsx files, formatting, formulas |\n| `pandas` | Data manipulation, analysis, merging datasets |\n| `xlrd` | Reading older .xls files (read-only) |\n| `xlsxwriter` | Creating new .xlsx files with advanced formatting |\n\n## Troubleshooting\n\n**Issue**: Heredoc syntax fails with 'unknown error' when using shell_agent\n- **Solution**: Write the Python script to a `.py` file first, then execute it with `python3 script.py`. This pattern is significantly more reliable than inline heredoc execution when shell_agent is the executor.\n\n**Issue**: FileNotFoundError\n- **Solution**: Verify the file path is absolute or relative to the working directory\n\n**Issue**: PermissionError\n- **Solution**: Ensure the file is not open in another application\n\n**Issue**: MemoryError on large files\n- **Solution**: Process data in chunks using pandas `chunksize` parameter\n\n**Issue**: Formatting not applying\n- **Solution**: Ensure you're modifying cell styles before saving, and use `.copy()` for style objects\n","# Direct Python Execution for Spreadsheet Tasks\n\n## When to Use This Skill\n\nUse direct `run_shell` with Python scripts for spreadsheet operations when:\n\n- Reading or writing complex Excel files with multiple sheets\n- Applying formulas, formatting, or data transformations\n- Working with `openpyxl`, `pandas`, or similar libraries\n- The operation involves multiple steps that could exceed agent step limits\n- You need precise control over error handling and debugging\n- Complex scripts benefit from file-based execution for better reliability\n\n## Why Direct Execution?\n\nThe `shell_agent` tool can:\n\n- Hit maximum step limits on complex multi-step operations\n- Produce unexplained errors on formatting operations\n- Fail on intricate spreadsheet reads\u002Fwrites due to iterative parsing\n- Fail to parse heredoc syntax correctly, causing 'unknown error' failures\n\nDirect `run_shell` with Python is more reliable because it:\n\n- Executes in a single step with no iteration limits\n- Provides clearer, immediate error messages\n- Handles complex operations without step constraints\n- Gives full control over library imports and execution flow\n- Writing scripts to `.py` files first avoids shell_agent parsing issues with heredocs\n\n## How to Use\n\n### Recommended Pattern: Write Script to File First\n\nFor complex multi-line scripts, especially when using shell_agent as executor:\n\n```bash\n# Step 1: Write the Python script to a file\ncat > process_spreadsheet.py \u003C\u003C 'EOF'\nimport openpyxl\nfrom openpyxl import Workbook\n\n# Your spreadsheet code here\nwb = openpyxl.load_workbook('file.xlsx')\n# ... operations ...\nwb.save('output.xlsx')\nprint('Success')\nEOF\n\n# Step 2: Execute the script\npython3 process_spreadsheet.py\n```\n\n### Alternative Pattern: Inline Heredoc (Simple Scripts Only)\n\nFor short, simple scripts when NOT using shell_agent as the executor:\n\n```bash\npython3 \u003C\u003C 'EOF'\nimport openpyxl\nfrom openpyxl import Workbook\n\n# Your spreadsheet code here\nwb = openpyxl.load_workbook('file.xlsx')\n# ... operations ...\nwb.save('output.xlsx')\nprint('Success')\nEOF\n```\n\n### Example 1: Read and Transform Excel Data\n\n**Write to file first, then execute:**\n\n```python\nimport pandas as pd\n\n# Load data from specific sheet\ndf = pd.read_excel('input.xlsx', sheet_name='Revenue')\n\n# Apply transformations\ndf['Net_Revenue'] = df['Gross_Revenue'] * (1 - df['Tax_Rate'])\n\n# Save results\ndf.to_excel('output.xlsx', index=False, sheet_name='Processed')\n```\n\n### Example 2: Multi-Sheet Operations with openpyxl\n\n**Write to file first, then execute:**\n\n```python\nfrom openpyxl import load_workbook\n\nwb = load_workbook('tour_data.xlsx')\n\n# Iterate through sheets\nfor sheet_name in wb.sheetnames:\n    ws = wb[sheet_name]\n    # Apply formatting or calculations\n    for row in ws.iter_rows(min_row=2, max_col=5):\n        # Process cells\n        pass\n\nwb.save('tour_data_processed.xlsx')\n```\n\n### Example 3: Complex Formatting Operations\n\n**Write to file first, then execute:**\n\n```python\nfrom openpyxl import load_workbook\nfrom openpyxl.styles import Font, PatternFill, Alignment\n\nwb = load_workbook('report.xlsx')\nws = wb.active\n\n# Apply header styling\nheader_fill = PatternFill(start_color='4472C4', fill_type='solid')\nheader_font = Font(bold=True, color='FFFFFF')\n\nfor cell in ws[1]:\n    cell.fill = header_fill\n    cell.font = header_font\n    cell.alignment = Alignment(horizontal='center')\n\nwb.save('report_formatted.xlsx')\n```\n\n### Example 4: Error Handling Pattern\n\n**Write to file first, then execute:**\n\n```python\nimport sys\nfrom openpyxl import load_workbook\n\ntry:\n    wb = load_workbook('data.xlsx')\n    ws = wb.active\n    \n    # Your operations here\n    value = ws['A1'].value\n    \n    wb.save('output.xlsx')\n    print(f\"Success: Processed {ws.max_row} rows\")\n    \nexcept Exception as e:\n    print(f\"Error: {str(e)}\", file=sys.stderr)\n    sys.exit(1)\n```\n\n## Best Practices\n\n1. **Prefer file-based execution** for complex scripts: write to `.py` file first, then execute via `run_shell`\n2. **Import only needed libraries** to reduce execution time\n3. **Print clear success\u002Ferror messages** for debugging\n4. **Save intermediate results** for complex multi-step transformations\n5. **Test with small data** before scaling to large spreadsheets\n6. **Use pandas for data manipulation** and openpyxl for formatting when both are needed\n7. **Clean up temporary script files** after execution if they won't be reused\n\n## When NOT to Use This Skill\n\n- Simple single-cell reads\u002Fwrites (use shell_agent or basic commands)\n- Operations that require interactive user input\n- Tasks where you need the agent to iteratively refine the approach\n\n## Common Libraries\n\n| Library | Best For |\n|---------|----------|\n| `openpyxl` | Reading\u002Fwriting .xlsx files, formatting, formulas |\n| `pandas` | Data manipulation, analysis, merging datasets |\n| `xlrd` | Reading older .xls files (read-only) |\n| `xlsxwriter` | Creating new .xlsx files with advanced formatting |\n\n## Troubleshooting\n\n**Issue**: Heredoc syntax fails with 'unknown error' when using shell_agent\n- **Solution**: Write the Python script to a `.py` file first, then execute it with `python3 script.py`. This pattern is significantly more reliable than inline heredoc execution when shell_agent is the executor.\n\n**Issue**: FileNotFoundError\n- **Solution**: Verify the file path is absolute or relative to the working directory\n\n**Issue**: PermissionError\n- **Solution**: Ensure the file is not open in another application\n\n**Issue**: MemoryError on large files\n- **Solution**: Process data in chunks using pandas `chunksize` parameter\n\n**Issue**: Formatting not applying\n- **Solution**: Ensure you're modifying cell styles before saving, and use `.copy()` for style objects\n",{"name":5,"description":7},"main","0650921d63895de3997bc81f1ff1d0ac67032072","gdpval_bench\u002Fskills\u002Fspreadsheet-direct-python-enhanced","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution","https:\u002F\u002Fgithub.com\u002FUF-gzj","2026-04-16 09:31:03",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add UF-gzj\u002Fopenspace-claude-evolution --skill spreadsheet-python-file-exec",{"tool":53,"command":54},"bunx","bunx skills add UF-gzj\u002Fopenspace-claude-evolution --skill spreadsheet-python-file-exec",{"tool":56,"command":57},"pnpm","pnpm dlx skills add UF-gzj\u002Fopenspace-claude-evolution --skill spreadsheet-python-file-exec","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fspreadsheet-direct-python-enhanced\u002FSKILL.md",true,[61],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},".skill_id","OTHER","其他",48,"https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fspreadsheet-direct-python-enhanced\u002F.skill_id",[68,89,104,112,142,158],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":36},"01M6XCCXD3NCM2YKR3WNGBASPC","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\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-ts-check\u002FSKILL.md",[],[75,76,77,78,79,80,81,82,35,83,84,85,86,32,87,88,24,23],"check","write","write special chars ts check","typescript","filters","characters","Existing","type-checking","errors","script","output","type","only","template",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":36},"01M6XCCT7E3J922Q345PBGSHPN","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\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-readback\u002FSKILL.md",[],[96,97,76,24,98,23,99,100,33,101,102,88,103,34,80,35,84],"readback","write special chars readback","helper","post","via","cleanup","read","verification",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":36},"01M6XCCMQX1R8B6FECWB3P63T7","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\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-heredoc\u002FSKILL.md",[],[111,76,80,29,84,100,88,24,23,35],"write special chars heredoc",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":123,"publishedAt":36},"01M6XCCG41M994JJEX6VN52PEP","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\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fworldmonitor-reference\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[124,125,126,127,128,78,129,130,131,132,133,35,134,135,136,137,138,139,140,141],"reference","worldmonitor","worldmonitor reference","architecture","dashboard","css","scheduler","layer","hierarchy","source","extracting","panel","patterns","edge functions","integrations","open","api","data",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":36},"01M6XCCCHWNKG2W4VH9E6A10HF","virtual-list","Implement efficient virtual scrolling for rendering large lists with DOM recycling, chunk-based rendering, and performance optimizations","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fvirtual-list\u002FSKILL.md",[],[149,150,151,152,35,153,34,154,155,156,157],"virtual list","list","virtual","chunk","dom","rendering","recycling","implement","performance",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":36},"01M6XCC7X8PKMR2DEW91XGHYSV","verify-directory-structure","Diagnose and resolve file access issues by first verifying the directory structure.","https:\u002F\u002Fgithub.com\u002FUF-gzj\u002Fopenspace-claude-evolution\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fverify-directory-structure\u002FSKILL.md",[],[165,166,167,168,169,170,24,28,171,172],"directory","verify directory structure","structure","verify","access","first","diagnose","file access"]