[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HXZDVZCPZ50VC7ACPCAP5Y":3,"skill-same:01M6HXZDVZCPZ50VC7ACPCAP5Y":61},{"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":18,"publishedAt":28,"linkOnly":29,"markdownContent":30,"markdownBody":31,"frontMatter":32,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":39,"ownerDescription":6,"updatedAt":40,"install":41,"resources":54},"01M6HXZDVZCPZ50VC7ACPCAP5Y","shell-python-heredoc",null,"Execute complex Python code via run_shell heredoc when execute_code_sandbox fails","HKUDS\u002FAgentPilot","HKUDS","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F118165258?v=4","01M6HW8VRNZP64G0P4MVJW2KKQ","✨Data Intelligence Lab@HKU✨","01M6HW8VWZVHBRHYH3T330PFWV",7989,"MIT","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fgdpval_bench\u002Fskills\u002Fshell-python-heredoc\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27],"python","shell","shell python heredoc","sandbox","run","code","execute","via","python code","2026-11-10 10:12:30",false,"---\nname: shell-python-heredoc\ndescription: Execute complex Python code via run_shell heredoc when execute_code_sandbox fails\n---\n\n# Shell Python Heredoc (Fallback Pattern)\n\n## Overview\n\nWhen `execute_code_sandbox` fails repeatedly (e.g., with \"unknown error\"), use `run_shell` with a Python heredoc as a reliable fallback for executing multi-line Python scripts with imports.\n\n## When to Use\n\n- `execute_code_sandbox` has failed 2+ times with unexplained errors\n- You need to run Python code with multiple imports (e.g., ReportLab, pandas)\n- The script is too complex for a one-liner but doesn't require persistence between calls\n- You need better error visibility from raw stdout\u002Fstderr\n\n## How to Use\n\n### Basic Pattern\n\n```python\nrun_shell(\n    command=\"\"\"python3 \u003C\u003C 'EOF'\nimport sys\n# Your Python code here\nprint(\"Hello from heredoc\")\nEOF\"\"\",\n    timeout=300\n)\n```\n\n### Key Syntax Rules\n\n1. **Use `\u003C\u003C 'EOF'`** (with single quotes) to prevent shell variable expansion\n2. **Indent Python code** relative to the heredoc delimiter\n3. **End with `EOF`** on its own line (no leading whitespace)\n4. **Capture output** from stdout\u002Fstderr for debugging\n\n### Example: Generating a PDF with ReportLab\n\n```python\nrun_shell(\n    command=\"\"\"python3 \u003C\u003C 'EOF'\nfrom reportlab.lib.pagesizes import letter\nfrom reportlab.pdfgen import canvas\n\nc = canvas.Canvas(\"output.pdf\", pagesize=letter)\nc.drawString(100, 750, \"Hello PDF\")\nc.save()\nprint(\"PDF created successfully\")\nEOF\"\"\",\n    timeout=300\n)\n```\n\n### Example: Multi-file Data Processing\n\n```python\nrun_shell(\n    command=\"\"\"python3 \u003C\u003C 'EOF'\nimport pandas as pd\nimport json\n\n# Load and process data\ndf = pd.read_csv(\"data.csv\")\nsummary = df.describe()\n\n# Output results\nprint(summary.to_string())\nwith open(\"summary.json\", \"w\") as f:\n    json.dump(summary.to_dict(), f)\nprint(\"Processing complete\")\nEOF\"\"\",\n    timeout=300\n)\n```\n\n## Advantages Over execute_code_sandbox\n\n- **More reliable** for complex imports (no sandbox isolation issues)\n- **Full stdout\u002Fstderr** access for debugging\n- **Longer timeout** flexibility (60s default vs 30s)\n- **Direct filesystem access** without ARTIFACT_PATH indirection\n\n## Disadvantages\n\n- **No persistent state** between calls (each heredoc is a fresh process)\n- **Verbose** for simple one-liners\n- **Shell escaping** may be needed for complex string literals\n\n## Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| `EOF` not recognized | Ensure `EOF` is on its own line with no leading spaces |\n| Import errors | Verify packages are installed in the shell environment |\n| File not found | Use absolute paths or check working directory with `pwd` |\n| Syntax errors | Check Python indentation within heredoc |\n\n## See Also\n\n- Use `execute_code_sandbox` for simpler scripts when available\n- Use `shell_agent` for tasks requiring autonomous iteration and error recovery\n- Consider writing scripts to `.py` files for complex, reusable code","# Shell Python Heredoc (Fallback Pattern)\n\n## Overview\n\nWhen `execute_code_sandbox` fails repeatedly (e.g., with \"unknown error\"), use `run_shell` with a Python heredoc as a reliable fallback for executing multi-line Python scripts with imports.\n\n## When to Use\n\n- `execute_code_sandbox` has failed 2+ times with unexplained errors\n- You need to run Python code with multiple imports (e.g., ReportLab, pandas)\n- The script is too complex for a one-liner but doesn't require persistence between calls\n- You need better error visibility from raw stdout\u002Fstderr\n\n## How to Use\n\n### Basic Pattern\n\n```python\nrun_shell(\n    command=\"\"\"python3 \u003C\u003C 'EOF'\nimport sys\n# Your Python code here\nprint(\"Hello from heredoc\")\nEOF\"\"\",\n    timeout=300\n)\n```\n\n### Key Syntax Rules\n\n1. **Use `\u003C\u003C 'EOF'`** (with single quotes) to prevent shell variable expansion\n2. **Indent Python code** relative to the heredoc delimiter\n3. **End with `EOF`** on its own line (no leading whitespace)\n4. **Capture output** from stdout\u002Fstderr for debugging\n\n### Example: Generating a PDF with ReportLab\n\n```python\nrun_shell(\n    command=\"\"\"python3 \u003C\u003C 'EOF'\nfrom reportlab.lib.pagesizes import letter\nfrom reportlab.pdfgen import canvas\n\nc = canvas.Canvas(\"output.pdf\", pagesize=letter)\nc.drawString(100, 750, \"Hello PDF\")\nc.save()\nprint(\"PDF created successfully\")\nEOF\"\"\",\n    timeout=300\n)\n```\n\n### Example: Multi-file Data Processing\n\n```python\nrun_shell(\n    command=\"\"\"python3 \u003C\u003C 'EOF'\nimport pandas as pd\nimport json\n\n# Load and process data\ndf = pd.read_csv(\"data.csv\")\nsummary = df.describe()\n\n# Output results\nprint(summary.to_string())\nwith open(\"summary.json\", \"w\") as f:\n    json.dump(summary.to_dict(), f)\nprint(\"Processing complete\")\nEOF\"\"\",\n    timeout=300\n)\n```\n\n## Advantages Over execute_code_sandbox\n\n- **More reliable** for complex imports (no sandbox isolation issues)\n- **Full stdout\u002Fstderr** access for debugging\n- **Longer timeout** flexibility (60s default vs 30s)\n- **Direct filesystem access** without ARTIFACT_PATH indirection\n\n## Disadvantages\n\n- **No persistent state** between calls (each heredoc is a fresh process)\n- **Verbose** for simple one-liners\n- **Shell escaping** may be needed for complex string literals\n\n## Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| `EOF` not recognized | Ensure `EOF` is on its own line with no leading spaces |\n| Import errors | Verify packages are installed in the shell environment |\n| File not found | Use absolute paths or check working directory with `pwd` |\n| Syntax errors | Check Python indentation within heredoc |\n\n## See Also\n\n- Use `execute_code_sandbox` for simpler scripts when available\n- Use `shell_agent` for tasks requiring autonomous iteration and error recovery\n- Consider writing scripts to `.py` files for complex, reusable code",{"name":5,"description":7},"main","6b84b0689ca0d9e7b1e4061188ff6b60758e0f8a","openspace\u002Flegacy\u002Fv1\u002Fgdpval_bench\u002Fskills\u002Fshell-python-heredoc",938,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot","https:\u002F\u002Fgithub.com\u002FHKUDS","https:\u002F\u002Fsites.google.com\u002Fview\u002Fchaoh","2026-11-06 23:04:01",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add HKUDS\u002FAgentPilot --skill shell-python-heredoc",{"tool":47,"command":48},"bunx","bunx skills add HKUDS\u002FAgentPilot --skill shell-python-heredoc",{"tool":50,"command":51},"pnpm","pnpm dlx skills add HKUDS\u002FAgentPilot --skill shell-python-heredoc","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fgdpval_bench\u002Fskills\u002Fshell-python-heredoc\u002FSKILL.md",true,[55],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},".skill_id","OTHER","其他",34,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fgdpval_bench\u002Fskills\u002Fshell-python-heredoc\u002F.skill_id",[62,81,100,125,149,171],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":28},"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",[],[64,69,70,71,72,73,74,75,76,77,78,79,23,80],"prepare","requests","with","missing","installation","rsi","up","use","user","work","SET","experiments",{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":28},"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",[],[83,88,89,90,91,92,93,94,95,96,97,98,99],"memory","review","auto","openspace","changes","facts","detect","entries","local","conflicts","stale","duplicates",{"skillNo":101,"name":102,"nameZh":6,"description":103,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":104,"categories":105,"keywords":111,"publishedAt":28},"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",[106],{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[112,113,114,91,115,116,117,118,119,120,121,122,123,124],"skill discovery","discovery","reusable","step by step","tokens","packages","help","cloud","reliability","capabilities","browse","search","Tools",{"skillNo":126,"name":127,"nameZh":6,"description":128,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":132,"publishedAt":28},"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",[131],{"categoryNo":107,"categoryName":108,"taxonomyType":109,"taxonomyTypeDesc":110},[133,134,135,91,136,137,138,139,140,114,90,76,141,142,143,144,145,146,147,148],"delegate","task","delegate task","time","improve","desktop automation","worker","community","autonomous","tool","stack","for","share","tasks","automation","MCP",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":28},"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",[],[156,157,158,159,160,161,162,163,164,19,165,166,167,168,144,169,170],"write special chars ts check","write","check","type","files","filters","only","template","file","typescript","output","Existing","type-checking","errors","script",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":177,"publishedAt":28},"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",[],[178,179,157,71,144,170,180,181,26,182,183,163,164,184,185,19],"write special chars readback","readback","helper","post","scripts","read","verification","cleanup"]