[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JCJF19WJR726D9B0PWXGGH":3,"skill-same:01M6JCJF19WJR726D9B0PWXGGH":65},{"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":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":6,"updatedAt":50,"install":51,"resources":64},"01M6JCJF19WJR726D9B0PWXGGH","cron-env-isolation-guard",null,"Guard-rail for debugging launchd cron failures caused by env isolation. Use when a launchd job works interactively but fails headless (missing keys, no TTY, MCP hangs).","S3YED\u002Fappie-kit","S3YED","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F62743867?v=4","01M6JBKBRRVP6KMS0VWZ27T3R6","01M6JBKBX0KG30284PW1DBYJT1",14,"MIT","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fdevops\u002Fcron-env-isolation-guard\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"cron","guard","isolation","env","cron env isolation guard","MCP","debugging","use","launchd","but","tty","missing","headless","keys","for","2026-11-10 10:12:30",false,"---\nname: cron-env-isolation-guard\ndescription: Guard-rail for debugging launchd cron failures caused by env isolation. Use when a launchd job works interactively but fails headless (missing keys, no TTY, MCP hangs).\n---\n\n# Cron Env Isolation Guard\n\n## Why this exists\n\nmacOS launchd strips most shell environment from launched jobs. Variables available in an interactive terminal are NOT inherited. Common silent failures:\n- API key env var missing → CLI crashes immediately\n- OAuth keyring prompt has no TTY → deadlock\n- MCP plugins init on claude startup → hang → SIGKILL after watchdog timeout\n\n## Diagnostic checklist (run in order)\n\n1. **Check exit code**: `launchctl list | grep \u003Clabel>` — column 2 is last exit code. `-1` \u002F `1` = crash; `-15` = SIGTERM (watchdog?).\n2. **Check log size**: if stdout log = 0 or ~90 bytes, job started but didn't produce output → silent crash or early hang.\n3. **Read the log**: check stderr path from the plist. Look for:\n   - `no TTY available for keyring file backend password prompt` → add the keyring password to plist EnvironmentVariables.\n   - `invalid_grant` \u002F `Bad Request` → OAuth token expired; need interactive re-auth.\n   - `aes.KeyUnwrap(): integrity check failed` → encrypted token corrupted; need re-auth.\n   - Python traceback \u002F CLI crash → missing API key in env.\n   - MCP plugin startup messages followed by silence + SIGKILL → add `--no-mcp` to `claude -p` invocation.\n4. **Read the plist**: confirm which EnvironmentVariables are set. Compare against what the script needs interactively.\n5. **Run the script manually** with the same PATH the plist specifies: `PATH=\u003Cplist-PATH> \u003Ccommand>`. Compare output.\n\n## Common fixes\n\n| Symptom | Fix |\n|---------|-----|\n| Keyring\u002Fpassword prompt has no TTY | Add password env var to plist `EnvironmentVariables` dict |\n| OAuth expired (invalid_grant) | Re-auth interactively, then reload launchd job |\n| CLI crash (no API key) | Add API key to plist env |\n| `claude -p` hangs on MCP init | Add `--no-mcp` flag to the claude invocation |\n| Any env var missing | Add to plist EnvironmentVariables OR source a `.env` file at script start |\n\n## Applying plist fixes\n\n```bash\n# Edit the plist to add env vars, then reload:\nlaunchctl unload ~\u002FLibrary\u002FLaunchAgents\u002F\u003Clabel>.plist\nlaunchctl load ~\u002FLibrary\u002FLaunchAgents\u002F\u003Clabel>.plist\n\n# Verify:\nlaunchctl list | grep \u003Clabel>\n```\n\n## Hard rule: never add secrets inline to plist\n\nPlists are readable by all processes under the same user. For API keys:\n- Preferred: source a secrets file at script start (e.g. `source ~\u002F.secrets\u002F.env`).\n- Acceptable: add to plist EnvironmentVariables if the key is already accessible to the user account.\n- Never: hardcode secret values directly in a plist tracked in git.\n","# Cron Env Isolation Guard\n\n## Why this exists\n\nmacOS launchd strips most shell environment from launched jobs. Variables available in an interactive terminal are NOT inherited. Common silent failures:\n- API key env var missing → CLI crashes immediately\n- OAuth keyring prompt has no TTY → deadlock\n- MCP plugins init on claude startup → hang → SIGKILL after watchdog timeout\n\n## Diagnostic checklist (run in order)\n\n1. **Check exit code**: `launchctl list | grep \u003Clabel>` — column 2 is last exit code. `-1` \u002F `1` = crash; `-15` = SIGTERM (watchdog?).\n2. **Check log size**: if stdout log = 0 or ~90 bytes, job started but didn't produce output → silent crash or early hang.\n3. **Read the log**: check stderr path from the plist. Look for:\n   - `no TTY available for keyring file backend password prompt` → add the keyring password to plist EnvironmentVariables.\n   - `invalid_grant` \u002F `Bad Request` → OAuth token expired; need interactive re-auth.\n   - `aes.KeyUnwrap(): integrity check failed` → encrypted token corrupted; need re-auth.\n   - Python traceback \u002F CLI crash → missing API key in env.\n   - MCP plugin startup messages followed by silence + SIGKILL → add `--no-mcp` to `claude -p` invocation.\n4. **Read the plist**: confirm which EnvironmentVariables are set. Compare against what the script needs interactively.\n5. **Run the script manually** with the same PATH the plist specifies: `PATH=\u003Cplist-PATH> \u003Ccommand>`. Compare output.\n\n## Common fixes\n\n| Symptom | Fix |\n|---------|-----|\n| Keyring\u002Fpassword prompt has no TTY | Add password env var to plist `EnvironmentVariables` dict |\n| OAuth expired (invalid_grant) | Re-auth interactively, then reload launchd job |\n| CLI crash (no API key) | Add API key to plist env |\n| `claude -p` hangs on MCP init | Add `--no-mcp` flag to the claude invocation |\n| Any env var missing | Add to plist EnvironmentVariables OR source a `.env` file at script start |\n\n## Applying plist fixes\n\n```bash\n# Edit the plist to add env vars, then reload:\nlaunchctl unload ~\u002FLibrary\u002FLaunchAgents\u002F\u003Clabel>.plist\nlaunchctl load ~\u002FLibrary\u002FLaunchAgents\u002F\u003Clabel>.plist\n\n# Verify:\nlaunchctl list | grep \u003Clabel>\n```\n\n## Hard rule: never add secrets inline to plist\n\nPlists are readable by all processes under the same user. For API keys:\n- Preferred: source a secrets file at script start (e.g. `source ~\u002F.secrets\u002F.env`).\n- Acceptable: add to plist EnvironmentVariables if the key is already accessible to the user account.\n- Never: hardcode secret values directly in a plist tracked in git.\n",{"name":5,"description":7},"master","8ec37df6d71fb664ea19d32c079e7d3ff931a8e0","skills\u002Fdevops\u002Fcron-env-isolation-guard",3,"https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit","https:\u002F\u002Fweblyfe.ai","https:\u002F\u002Fgithub.com\u002FS3YED","2026-08-27 01:54:02",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add S3YED\u002Fappie-kit --skill cron-env-isolation-guard",{"tool":57,"command":58},"bunx","bunx skills add S3YED\u002Fappie-kit --skill cron-env-isolation-guard",{"tool":60,"command":61},"pnpm","pnpm dlx skills add S3YED\u002Fappie-kit --skill cron-env-isolation-guard","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fdevops\u002Fcron-env-isolation-guard\u002FSKILL.md",true,[],[66,98,133,158,189,212],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":79,"publishedAt":38},"01M6JFD4M6N4DSGC7TXEJ5R3J2","ai-music","AI music generation and audio tools: HeartMuLa lyrics-to-music generation, songwriting craft (+ Suno prompts), and audio spectrogram\u002Ffeature visualization.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fwethlete\u002Fai-music\u002FSKILL.md",[72,75,78],{"categoryNo":73,"categoryName":74,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":76,"categoryName":77,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],"music","ai music","humanizer","visualization","Tools","Audio","hermes","hermes agent","songwriting","suno","lyrics","prompts","heartmula","craft","generation","feature","ai music generation","music generation",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":112,"publishedAt":38},"01M6JFCZE4XNFQFMNZDHKHT5V5","agentic-webdesign-design-system-ingestion","Use v0 Design Systems 2.0, Bolt Design System Agents, or Lovable to generate production UI from a client's real design system components — not generic Tailwind. Use when building a client website where brand consistency matters.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fweb-design\u002Fagentic-webdesign-design-system-ingestion\u002FSKILL.md",[104,107],{"categoryNo":105,"categoryName":106,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132],"design","agentic","design system","system","ingestion","webdesign","agentic webdesign design system ingestion","components","generate","design systems","website","ui","Tailwind","bolt","lovable","v0","design-system","wed","design system components","appie",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":141,"publishedAt":38},"01M6JFCVPX3913CFAS6QQJ33ZB","agentic-webdesign-agent-elements","Use 21st.dev Agent Elements — 25 shadcn\u002Fui components purpose-built for AI agent UIs. Tool cards (Bash, Edit, Search, Plan, Subagent, MCP), chat, input, streaming. Open source, shadcn-registry install, no runtime lock-in.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fweb-design\u002Fagentic-webdesign-agent-elements\u002FSKILL.md",[139,140],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},[114,142,118,143,28,144,120,145,146,147,148,149,150,151,152,153,154,155,156,157],"elements","agentic webdesign agent elements","ai agent","registry","search","streaming","open source","open","Bash","plan","subagent","edit","install","input","lock","source",{"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":168,"publishedAt":38},"01M6JFCQC7H65M9QJ6TRE71BS1","vercel-deployment","Deploy static sites and frontends to Vercel — handles both CLI and REST API paths, including the CLI token sanitization workaround.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsoftware-development\u002Fvercel-deployment\u002FSKILL.md",[164,167],{"categoryNo":165,"categoryName":166,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188],"deployment","vercel deployment","vercel","macos","cli","linux","windows","deploy","vercel deploy","REST","api","site","deploy to vercel","token","rest api","host","sites","paths","sanitization","static site",{"skillNo":190,"name":191,"nameZh":6,"description":192,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":193,"categories":194,"keywords":196,"publishedAt":38},"01M6JFCM4SMTXBM5A01BK2YQG1","software-quality-workflows","Umbrella workflow for TDD, debugging, code simplification, spikes, pre-commit review, and debugger-assisted investigation.","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsoftware-development\u002Fsoftware-quality-workflows\u002FSKILL.md",[195],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[197,198,199,200,201,202,203,204,29,205,206,207,208,209,210,211,37],"workflows","quality","software","software quality workflows","review","tdd","workflow","commit","code","debugger","pre-commit","investigation","code simplification","user","simplification",{"skillNo":213,"name":214,"nameZh":6,"description":215,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":216,"categories":217,"keywords":225,"publishedAt":38},"01M6JFCGD0M6CEATY01W7YN6DB","react-component-refactoring","Safely refactor large React components into smaller, maintainable pieces using proven patterns","https:\u002F\u002Fgithub.com\u002FS3YED\u002Fappie-kit\u002Fblob\u002Fmaster\u002Fskills\u002Fsoftware-development\u002Freact-component-refactoring\u002FSKILL.md",[218,221,224],{"categoryNo":219,"categoryName":220,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":222,"categoryName":223,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[226,227,228,229,230,231,232,233,172,234,235,120,236,175,237,205,238,239,240,241],"react","component","refactoring","component refactoring","react component","react component refactoring","frontend","writing","safe","typescript","react components","modular","refactor","simplify","patterns","test-driven-development"]