[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XEYT81CDFBR6X50K76KCPB":3,"skill-same:01M6XEYT81CDFBR6X50K76KCPB":75},{"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":26,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":14,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":60,"install":61,"resources":74},"01M6XEYT81CDFBR6X50K76KCPB","bash-scripting",null,"Bash scripting workflow for creating production-ready shell scripts with defensive patterns, error handling, and testing.","sapsapshen\u002Fai-memory-router","sapsapshen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F20347959?v=4","01M6XDQEF1DP50DKF37H81J3J5","shenmian","01M6XDQEJPE41Y3DT2763X8ZJN",0,"MIT","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcopilot\u002Fbash-scripting\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"scripting","Bash","bash scripting","ready","2026","for","production-ready","with","error","defensive","scripts","bundle","patterns","testing","shell scripts","shell","Production","error handling","workflow","safe","personal","2026-11-10 10:12:30",false,"---\nname: bash-scripting\ndescription: \"Bash scripting workflow for creating production-ready shell scripts with defensive patterns, error handling, and testing.\"\ncategory: granular-workflow-bundle\nrisk: safe\nsource: personal\ndate_added: \"2026-02-27\"\n---\n\n# Bash Scripting Workflow\n\n## Overview\n\nSpecialized workflow for creating robust, production-ready bash scripts with defensive programming patterns, comprehensive error handling, and automated testing.\n\n## When to Use This Workflow\n\nUse this workflow when:\n- Creating automation scripts\n- Writing system administration tools\n- Building deployment scripts\n- Developing backup solutions\n- Creating CI\u002FCD scripts\n\n## Workflow Phases\n\n### Phase 1: Script Design\n\n#### Skills to Invoke\n- `bash-pro` - Professional scripting\n- `bash-defensive-patterns` - Defensive patterns\n\n#### Actions\n1. Define script purpose\n2. Identify inputs\u002Foutputs\n3. Plan error handling\n4. Design logging strategy\n5. Document requirements\n\n#### Copy-Paste Prompts\n```\nUse @bash-pro to design production-ready bash script\n```\n\n### Phase 2: Script Structure\n\n#### Skills to Invoke\n- `bash-pro` - Script structure\n- `bash-defensive-patterns` - Safety patterns\n\n#### Actions\n1. Add shebang and strict mode\n2. Create usage function\n3. Implement argument parsing\n4. Set up logging\n5. Add cleanup handlers\n\n#### Copy-Paste Prompts\n```\nUse @bash-defensive-patterns to implement strict mode and error handling\n```\n\n### Phase 3: Core Implementation\n\n#### Skills to Invoke\n- `bash-linux` - Linux commands\n- `linux-shell-scripting` - Shell scripting\n\n#### Actions\n1. Implement main functions\n2. Add input validation\n3. Create helper functions\n4. Handle edge cases\n5. Add progress indicators\n\n#### Copy-Paste Prompts\n```\nUse @bash-linux to implement system commands\n```\n\n### Phase 4: Error Handling\n\n#### Skills to Invoke\n- `bash-defensive-patterns` - Error handling\n- `error-handling-patterns` - Error patterns\n\n#### Actions\n1. Add trap handlers\n2. Implement retry logic\n3. Create error messages\n4. Set up exit codes\n5. Add rollback capability\n\n#### Copy-Paste Prompts\n```\nUse @bash-defensive-patterns to add comprehensive error handling\n```\n\n### Phase 5: Logging\n\n#### Skills to Invoke\n- `bash-pro` - Logging patterns\n\n#### Actions\n1. Create logging function\n2. Add log levels\n3. Implement timestamps\n4. Configure log rotation\n5. Add debug mode\n\n#### Copy-Paste Prompts\n```\nUse @bash-pro to implement structured logging\n```\n\n### Phase 6: Testing\n\n#### Skills to Invoke\n- `bats-testing-patterns` - Bats testing\n- `shellcheck-configuration` - ShellCheck\n\n#### Actions\n1. Write Bats tests\n2. Run ShellCheck\n3. Test edge cases\n4. Verify error handling\n5. Test with different inputs\n\n#### Copy-Paste Prompts\n```\nUse @bats-testing-patterns to write script tests\n```\n\n```\nUse @shellcheck-configuration to lint bash script\n```\n\n### Phase 7: Documentation\n\n#### Skills to Invoke\n- `documentation-templates` - Documentation\n\n#### Actions\n1. Add script header\n2. Document functions\n3. Create usage examples\n4. List dependencies\n5. Add troubleshooting section\n\n#### Copy-Paste Prompts\n```\nUse @documentation-templates to document bash script\n```\n\n## Script Template\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\nset -euo pipefail\n\nreadonly SCRIPT_NAME=$(basename \"$0\")\nreadonly SCRIPT_DIR=$(cd \"$(dirname \"$0\")\" && pwd)\n\nlog() { echo \"[$(date '+%Y-%m-%d %H:%M:%S')] $*\"; }\nerror() { log \"ERROR: $*\" >&2; exit 1; }\n\nusage() { cat \u003C\u003CEOF\nUsage: $SCRIPT_NAME [OPTIONS]\nOptions:\n    -h, --help      Show help\n    -v, --verbose   Verbose output\nEOF\n}\n\nmain() {\n    log \"Script started\"\n    # Implementation\n    log \"Script completed\"\n}\n\nmain \"$@\"\n```\n\n## Quality Gates\n\n- [ ] ShellCheck passes\n- [ ] Bats tests pass\n- [ ] Error handling works\n- [ ] Logging functional\n- [ ] Documentation complete\n\n## Related Workflow Bundles\n\n- `os-scripting` - OS scripting\n- `linux-troubleshooting` - Linux troubleshooting\n- `cloud-devops` - DevOps automation\n","# Bash Scripting Workflow\n\n## Overview\n\nSpecialized workflow for creating robust, production-ready bash scripts with defensive programming patterns, comprehensive error handling, and automated testing.\n\n## When to Use This Workflow\n\nUse this workflow when:\n- Creating automation scripts\n- Writing system administration tools\n- Building deployment scripts\n- Developing backup solutions\n- Creating CI\u002FCD scripts\n\n## Workflow Phases\n\n### Phase 1: Script Design\n\n#### Skills to Invoke\n- `bash-pro` - Professional scripting\n- `bash-defensive-patterns` - Defensive patterns\n\n#### Actions\n1. Define script purpose\n2. Identify inputs\u002Foutputs\n3. Plan error handling\n4. Design logging strategy\n5. Document requirements\n\n#### Copy-Paste Prompts\n```\nUse @bash-pro to design production-ready bash script\n```\n\n### Phase 2: Script Structure\n\n#### Skills to Invoke\n- `bash-pro` - Script structure\n- `bash-defensive-patterns` - Safety patterns\n\n#### Actions\n1. Add shebang and strict mode\n2. Create usage function\n3. Implement argument parsing\n4. Set up logging\n5. Add cleanup handlers\n\n#### Copy-Paste Prompts\n```\nUse @bash-defensive-patterns to implement strict mode and error handling\n```\n\n### Phase 3: Core Implementation\n\n#### Skills to Invoke\n- `bash-linux` - Linux commands\n- `linux-shell-scripting` - Shell scripting\n\n#### Actions\n1. Implement main functions\n2. Add input validation\n3. Create helper functions\n4. Handle edge cases\n5. Add progress indicators\n\n#### Copy-Paste Prompts\n```\nUse @bash-linux to implement system commands\n```\n\n### Phase 4: Error Handling\n\n#### Skills to Invoke\n- `bash-defensive-patterns` - Error handling\n- `error-handling-patterns` - Error patterns\n\n#### Actions\n1. Add trap handlers\n2. Implement retry logic\n3. Create error messages\n4. Set up exit codes\n5. Add rollback capability\n\n#### Copy-Paste Prompts\n```\nUse @bash-defensive-patterns to add comprehensive error handling\n```\n\n### Phase 5: Logging\n\n#### Skills to Invoke\n- `bash-pro` - Logging patterns\n\n#### Actions\n1. Create logging function\n2. Add log levels\n3. Implement timestamps\n4. Configure log rotation\n5. Add debug mode\n\n#### Copy-Paste Prompts\n```\nUse @bash-pro to implement structured logging\n```\n\n### Phase 6: Testing\n\n#### Skills to Invoke\n- `bats-testing-patterns` - Bats testing\n- `shellcheck-configuration` - ShellCheck\n\n#### Actions\n1. Write Bats tests\n2. Run ShellCheck\n3. Test edge cases\n4. Verify error handling\n5. Test with different inputs\n\n#### Copy-Paste Prompts\n```\nUse @bats-testing-patterns to write script tests\n```\n\n```\nUse @shellcheck-configuration to lint bash script\n```\n\n### Phase 7: Documentation\n\n#### Skills to Invoke\n- `documentation-templates` - Documentation\n\n#### Actions\n1. Add script header\n2. Document functions\n3. Create usage examples\n4. List dependencies\n5. Add troubleshooting section\n\n#### Copy-Paste Prompts\n```\nUse @documentation-templates to document bash script\n```\n\n## Script Template\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\nset -euo pipefail\n\nreadonly SCRIPT_NAME=$(basename \"$0\")\nreadonly SCRIPT_DIR=$(cd \"$(dirname \"$0\")\" && pwd)\n\nlog() { echo \"[$(date '+%Y-%m-%d %H:%M:%S')] $*\"; }\nerror() { log \"ERROR: $*\" >&2; exit 1; }\n\nusage() { cat \u003C\u003CEOF\nUsage: $SCRIPT_NAME [OPTIONS]\nOptions:\n    -h, --help      Show help\n    -v, --verbose   Verbose output\nEOF\n}\n\nmain() {\n    log \"Script started\"\n    # Implementation\n    log \"Script completed\"\n}\n\nmain \"$@\"\n```\n\n## Quality Gates\n\n- [ ] ShellCheck passes\n- [ ] Bats tests pass\n- [ ] Error handling works\n- [ ] Logging functional\n- [ ] Documentation complete\n\n## Related Workflow Bundles\n\n- `os-scripting` - OS scripting\n- `linux-troubleshooting` - Linux troubleshooting\n- `cloud-devops` - DevOps automation\n",{"name":5,"risk":46,"source":47,"category":53,"date_added":54,"description":7},"granular-workflow-bundle","2026-02-27","main","7a38d8e7073e61c16eda85681cb32fb68a8657a5","skills-store\u002Fcopilot\u002Fbash-scripting","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router","https:\u002F\u002Fgithub.com\u002Fsapsapshen","2026-04-14 21:12:12",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add sapsapshen\u002Fai-memory-router --skill bash-scripting",{"tool":67,"command":68},"bunx","bunx skills add sapsapshen\u002Fai-memory-router --skill bash-scripting",{"tool":70,"command":71},"pnpm","pnpm dlx skills add sapsapshen\u002Fai-memory-router --skill bash-scripting","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fcopilot\u002Fbash-scripting\u002FSKILL.md",true,[],[76,99,124,134,147,164],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":87,"publishedAt":48},"01M71ATQRKG48SH06FQ697T5G9","wechat-search","Search WeChat Official Account articles using OpenClaw's web search and fetch capabilities with compliance-focused design.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fwechat-search-release\u002FSKILL.md",[82],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[88,89,90,91,92,93,94,95,96,97,98,34],"wechat search","wechat","search","capabilities","openclaw","design","web search","compliance","web","official","fetch",{"skillNo":100,"name":101,"nameZh":6,"description":102,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":103,"categories":104,"keywords":105,"publishedAt":48},"01M71ATNAVGZB35PFYM2GC5N00","trend-tap","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend tap', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-tap\u002FSKILL.md",[],[106,107,108,109,28,110,90,111,112,113,114,115,116,117,118,119,120,121,122,123],"trend","trend tap","tap","api keys","time","trending","hacker","aggregator","do","when","brew","live","data","google","install","read","across","api",{"skillNo":125,"name":126,"nameZh":6,"description":127,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":128,"categories":129,"keywords":130,"publishedAt":48},"01M71ATJ9AM5KM15AA8PS302EB","trend-radar","Real-time trending topics aggregator across 7 platforms (X\u002FTwitter, Reddit, Google Trends, Hacker News, Zhihu, Bilibili, Weibo). Trigger: when user says 'trend', 'trends', 'trend pulse', '热点', '热搜', or asks what is trending\u002Fhot. Do NOT use web_search — this skill already fetches live data from all platforms with zero API keys.","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftrend-radar\u002FSKILL.md",[],[131,132,106,116,117,118,119,28,90,121,133,122,123,115,113,112,111,120,110,109],"trend radar","radar","pulse",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":140,"publishedAt":48},"01M71ATGF095N3EJM9G8SD0BB5","tech-news-daily","每日科技新闻汇——从全球多个 RSS 源抓取最新科技新闻，翻译（英→中）、去重、排版成每日简报。当用户询问科技新闻、科技新鲜事、每日科技、技术动态、Daily Tech News 或类似表达时触发此技能。","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Ftech-news-daily\u002FSKILL.md",[],[141,142,143,144,145,146],"news","tech","tech news daily","daily","rss","翻译",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":156,"publishedAt":48},"01M71ATFAEAMQ17M70NQNY7SR8","summarize","Summarize URLs or files with the summarize CLI (web, PDFs, images, audio, YouTube).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsummarize\u002FSKILL.md",[153],{"categoryNo":154,"categoryName":155,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[149,96,157,158,159,34,116,160,161,162,108,163,120],"Audio","cli","youtube","images","https","files","pdfs",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":48},"01M71ATDNS3R0M4H936PACQAWZ","sonoscli","Control Sonos speakers (discover\u002Fstatus\u002Fplay\u002Fvolume\u002Fgroup).","https:\u002F\u002Fgithub.com\u002Fsapsapshen\u002Fai-memory-router\u002Fblob\u002Fmain\u002Fskills-store\u002Fopenclaw\u002Fsonoscli\u002FSKILL.md",[],[166,171,172,173,120,174,161,175,176,177,178,179],"status","play","go","latest","github","discover","control","cmd","volume"]