[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6J2AFE41MZQ28VEPCEF2K7S":3,"skill-same:01M6J2AFE41MZQ28VEPCEF2K7S":66},{"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":28,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":48,"ownerHtmlUrl":49,"ownerBlogUrl":6,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6J2AFE41MZQ28VEPCEF2K7S","senior-developer-scripts-and-automation-growth",null,"Grow workspace capabilities by creating reusable scripts","sampleXbro\u002Fagentsmesh","sampleXbro","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F55853222?v=4","01M6J1A11VAS9QEE92CHHMBCKC","Serhii Zhabskyi","01M6J1A16FCGNMMABYE0P6SNTF",29,"MIT","https:\u002F\u002Fgithub.com\u002FsampleXbro\u002Fagentsmesh\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fsenior-developer-scripts-and-automation-growth\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37],"automation","developer","growth","scripts","senior developer scripts and automation growth","capabilities","workspace","reusable","grow","2026-11-10 10:12:30",false,"---\nname: senior-developer-scripts-and-automation-growth\ndescription: Grow workspace capabilities by creating reusable scripts\n---\n\n## Purpose\n\n## Scripts & Automation Growth\n\nThe workspace should get smarter over time. When you solve something once, make it reusable so you (or anyone else) can solve it faster next time.\n\n**Before doing manual work, check what already exists:**\n\nLook for a scripts\u002F directory and README index. If it exists, skim it. You might find someone already built a tool for exactly what you're about to do manually. Scripts might be organized by category (database\u002F, git\u002F, api-wrappers\u002F) or just in the root - check what makes sense.\n\n**If a tool exists → use it. If it doesn't but the task is repetitive → create it.**\n\n### When to Build Reusable Tools\n\nCreate scripts when:\n- You're about to do something manually that will probably happen again\n- You're calling an external API (Confluence, Jira, monitoring tools) using credentials from .env\n- A task has multiple steps that could be automated\n- It would be useful for someone else (or future you)\n\nDon't create scripts for:\n- One-off tasks\n- Things that belong in a project repo (not the workspace)\n- Simple single commands\n\n### How This Works Over Time\n\n**First time you access an API:**\n```bash\n# Manual approach - fine for first time\ncurl -H \"Authorization: Bearer $API_TOKEN\" \"https:\u002F\u002Fapi.example.com\u002Fsearch?q=...\"\n```\n\n**As you're doing it, think:** \"Will I do this again?\" If yes, wrap it in a script:\n\n```python\n# scripts\u002Fapi-wrappers\u002Fconfluence-search.py\n# Quick wrapper that takes search term as argument\n# Now it's reusable\n```\n\n**Update scripts\u002FREADME.md with what you created:**\n```markdown\n## API Wrappers\n- `api-wrappers\u002Fconfluence-search.py \"query\"` - Search Confluence docs\n```\n\n**Next time:** Instead of manually calling the API again, just run your script. The workspace gets smarter.\n\n### Natural Organization\n\nDon't overthink structure. Organize logically:\n- Database stuff → scripts\u002Fdatabase\u002F\n- Git automation → scripts\u002Fgit\u002F\n- API wrappers → scripts\u002Fapi-wrappers\u002F\n- Standalone utilities → scripts\u002F\n\nKeep scripts\u002FREADME.md updated as you add things. That's the index everyone checks first.\n\n### The Pattern\n\n1. Check if tool exists (scripts\u002FREADME.md)\n2. If exists → use it\n3. If not and task is repetitive → build it + document it\n4. Future sessions benefit from past work\n\nThis is how workspaces become powerful over time. Each session leaves behind useful tools for the next one.\n\n---","## Purpose\n\n## Scripts & Automation Growth\n\nThe workspace should get smarter over time. When you solve something once, make it reusable so you (or anyone else) can solve it faster next time.\n\n**Before doing manual work, check what already exists:**\n\nLook for a scripts\u002F directory and README index. If it exists, skim it. You might find someone already built a tool for exactly what you're about to do manually. Scripts might be organized by category (database\u002F, git\u002F, api-wrappers\u002F) or just in the root - check what makes sense.\n\n**If a tool exists → use it. If it doesn't but the task is repetitive → create it.**\n\n### When to Build Reusable Tools\n\nCreate scripts when:\n- You're about to do something manually that will probably happen again\n- You're calling an external API (Confluence, Jira, monitoring tools) using credentials from .env\n- A task has multiple steps that could be automated\n- It would be useful for someone else (or future you)\n\nDon't create scripts for:\n- One-off tasks\n- Things that belong in a project repo (not the workspace)\n- Simple single commands\n\n### How This Works Over Time\n\n**First time you access an API:**\n```bash\n# Manual approach - fine for first time\ncurl -H \"Authorization: Bearer $API_TOKEN\" \"https:\u002F\u002Fapi.example.com\u002Fsearch?q=...\"\n```\n\n**As you're doing it, think:** \"Will I do this again?\" If yes, wrap it in a script:\n\n```python\n# scripts\u002Fapi-wrappers\u002Fconfluence-search.py\n# Quick wrapper that takes search term as argument\n# Now it's reusable\n```\n\n**Update scripts\u002FREADME.md with what you created:**\n```markdown\n## API Wrappers\n- `api-wrappers\u002Fconfluence-search.py \"query\"` - Search Confluence docs\n```\n\n**Next time:** Instead of manually calling the API again, just run your script. The workspace gets smarter.\n\n### Natural Organization\n\nDon't overthink structure. Organize logically:\n- Database stuff → scripts\u002Fdatabase\u002F\n- Git automation → scripts\u002Fgit\u002F\n- API wrappers → scripts\u002Fapi-wrappers\u002F\n- Standalone utilities → scripts\u002F\n\nKeep scripts\u002FREADME.md updated as you add things. That's the index everyone checks first.\n\n### The Pattern\n\n1. Check if tool exists (scripts\u002FREADME.md)\n2. If exists → use it\n3. If not and task is repetitive → build it + document it\n4. Future sessions benefit from past work\n\nThis is how workspaces become powerful over time. Each session leaves behind useful tools for the next one.\n\n---",{"name":5,"description":7},"master","2a22abcae4e5677b6e385b5a0e144c48baac4a94",".claude\u002Fskills\u002Fsenior-developer-scripts-and-automation-growth",7,"https:\u002F\u002Fgithub.com\u002FsampleXbro\u002Fagentsmesh","https:\u002F\u002Fsamplexbro.github.io\u002Fagentsmesh\u002F","https:\u002F\u002Fgithub.com\u002FsampleXbro","Senior Software Engineer · React · TypeScript · Next.js · Smart TV specialist (Tizen, webOS, Android TV)","2026-11-06 03:06:21",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add sampleXbro\u002Fagentsmesh --skill senior-developer-scripts-and-automation-growth",{"tool":58,"command":59},"bunx","bunx skills add sampleXbro\u002Fagentsmesh --skill senior-developer-scripts-and-automation-growth",{"tool":61,"command":62},"pnpm","pnpm dlx skills add sampleXbro\u002Fagentsmesh --skill senior-developer-scripts-and-automation-growth","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FsampleXbro\u002Fagentsmesh\u002Fblob\u002Fmaster\u002F.claude\u002Fskills\u002Fsenior-developer-scripts-and-automation-growth\u002FSKILL.md",true,[],[67,81,95,117,123,142],{"skillNo":68,"name":69,"nameZh":6,"description":70,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":76,"publishedAt":38},"01M6J2GJ4NDEPJND2GAXN0VPRB","research","Research docs and summarize decisions","https:\u002F\u002Fgithub.com\u002FsampleXbro\u002Fagentsmesh\u002Fblob\u002Fmaster\u002Ftests\u002Fe2e\u002Ffixtures\u002Fwindsurf-project\u002F.windsurf\u002Fskills\u002Fresearch\u002FSKILL.md",[73],{"categoryNo":74,"categoryName":75,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[69,77,78,79,80],"docs","summarize","decisions","research docs",{"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":88,"publishedAt":38},"01M6J2GF8WQVFP75AMJWV7YM50","debugging","Systematic debugging workflow for production failures and test regressions.","https:\u002F\u002Fgithub.com\u002FsampleXbro\u002Fagentsmesh\u002Fblob\u002Fmaster\u002Ftests\u002Fe2e\u002Ffixtures\u002Fwarp-project\u002F.warp\u002Fskills\u002Fdebugging\u002FSKILL.md",[87],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[83,89,90,91,92,93,94],"systematic debugging","workflow","test","Production","systematic","for",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":106,"publishedAt":38},"01M6J2GAQRCM0KV565J63STPWB","api-generator","Generate REST API endpoints with validation and tests","https:\u002F\u002Fgithub.com\u002FsampleXbro\u002Fagentsmesh\u002Fblob\u002Fmaster\u002Ftests\u002Fe2e\u002Ffixtures\u002Ftrae-project\u002F.trae\u002Fskills\u002Fapi-generator\u002FSKILL.md",[101,104,105],{"categoryNo":102,"categoryName":103,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[107,108,109,110,111,112,113,114,115,116],"api","api generator","generator","REST","endpoints","rest api","tests","with","validation","generate",{"skillNo":118,"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":119,"categories":120,"keywords":122,"publishedAt":38},"01M6J2G7VF3A2EGK5YBR4BM9KS","https:\u002F\u002Fgithub.com\u002FsampleXbro\u002Fagentsmesh\u002Fblob\u002Fmaster\u002Ftests\u002Fe2e\u002Ffixtures\u002Frovodev-project\u002F.rovodev\u002Fskills\u002Fdebugging\u002FSKILL.md",[121],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[83,94,90,91,89,92,93],{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":130,"publishedAt":38},"01M6J2G4VHBHSPXGVQRZCH8CDW","typescript-pro","Apply advanced TypeScript patterns including conditional types, template literal types, and mapped types","https:\u002F\u002Fgithub.com\u002FsampleXbro\u002Fagentsmesh\u002Fblob\u002Fmaster\u002Ftests\u002Fe2e\u002Ffixtures\u002Froo-code-project\u002F.roo\u002Fskills\u002Ftypescript-pro\u002FSKILL.md",[129],{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[131,132,133,134,135,136,137,138,139,140,141],"typescript","typescript pro","pro","patterns","code","architect","template","typescript patterns","Literal","types","advanced",{"skillNo":143,"name":83,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":148,"publishedAt":38},"01M6J2G2133FJ5SAHK9WX4YVNV","Systematic debugging workflow for Replit projects","https:\u002F\u002Fgithub.com\u002FsampleXbro\u002Fagentsmesh\u002Fblob\u002Fmaster\u002Ftests\u002Fe2e\u002Ffixtures\u002Freplit-agent-project\u002F.agents\u002Fskills\u002Fdebugging\u002FSKILL.md",[147],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[83,89,149,93,94,90],"projects"]