[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M72SWMTJSVMCN8ZXNDZKF2RF":3,"skill-same:01M72SWMTJSVMCN8ZXNDZKF2RF":45},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":27,"ownerHtmlUrl":28,"ownerBlogUrl":6,"ownerDescription":29,"updatedAt":30,"install":31,"resources":44},"01M72SWMTJSVMCN8ZXNDZKF2RF","background-transfer-monitor",null,"Use when running long background uploads: track progress.","iberi22\u002Fskills","iberi22","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F10615454?v=4","01M72SQ2NXAA3GW0FSH053A5ES","Brahyan Belalcazar","01M72SQ2PYCH0SSA1K61NGEHDV",0,"MIT","https:\u002F\u002Fgithub.com\u002Fiberi22\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdevops\u002Fbackground-transfer-monitor\u002FSKILL.md",[],[],"2026-11-10 22:39:42",false,"---\nname: background-transfer-monitor\ndescription: 'Use when running long background uploads: track progress.'\n---\n\n# Background Transfer Monitor\n\nRun long transfers so they stay observable, report progress as % + ETA, and\nverify completion independently. Applies to any transfer with countable units\n(files, repos, chunks).\n\n## 1. Launch (observable)\n\n1. Redirect to a log file, never pipe through `tail`\u002F`head`:\n   `cmd > ~\u002F.cache\u002F\u003Cjob>.log 2>&1`. Pipes buffer and blind process polling.\n2. Launch in background with completion notification.\n3. Verify alive IMMEDIATELY after launch: list\u002Fpoll the job AND `pgrep` for\n   the real child process. A launch that reports \"started\" but shows no\n   process died silently — relaunch, never assume it is running.\n4. Record total units up front (file count, repo count) so % is computable\n   on every later ping without new discovery.\n\n## 2. Progress checks\n\n- Progress = completed units \u002F total units, measured INDEPENDENTLY of the\n  job (destination listing vs local source) — never from the job's own\n  claims alone.\n- For rclone-to-Drive specifics see `references\u002Frclone-drive.md`.\n- Before reporting \"stuck\" on a slow unit, drill one level deeper (files\n  inside the current repo\u002Fdir) and report the inner %.\n\n## 3. Status reports\n\n- Terse, in Spanish: phase %, total %, what is running now, what remains,\n  ETA. One or two lines, no narration.\n- An unchanged % between pings is a valid report — name the current unit\n  and confirm it is still transferring.\n\n## 4. Completion\n\n- Done = exit code 0 AND independent verification (destination counts match\n  source, spot-check key artifacts). A worker's self-report alone is not\n  evidence.\n- Final report: what landed where + counts. If the session changed a\n  standing condition (e.g. network constraint lifted), update memory.\n\n## Pitfalls\n\n- Never pipe a background job through `tail` for its final output — the\n  monitor then only sees buffered previews until the pipe closes.\n- A missing remote directory is not proof of failure — confirm the source\n  unit is non-empty first (some backends have no empty-dir concept).\n- Verify new rclone filters from the SAME root the transfer runs from —\n  `**\u002F` patterns match relative to root, so a check from elsewhere misleads.\n","# Background Transfer Monitor\n\nRun long transfers so they stay observable, report progress as % + ETA, and\nverify completion independently. Applies to any transfer with countable units\n(files, repos, chunks).\n\n## 1. Launch (observable)\n\n1. Redirect to a log file, never pipe through `tail`\u002F`head`:\n   `cmd > ~\u002F.cache\u002F\u003Cjob>.log 2>&1`. Pipes buffer and blind process polling.\n2. Launch in background with completion notification.\n3. Verify alive IMMEDIATELY after launch: list\u002Fpoll the job AND `pgrep` for\n   the real child process. A launch that reports \"started\" but shows no\n   process died silently — relaunch, never assume it is running.\n4. Record total units up front (file count, repo count) so % is computable\n   on every later ping without new discovery.\n\n## 2. Progress checks\n\n- Progress = completed units \u002F total units, measured INDEPENDENTLY of the\n  job (destination listing vs local source) — never from the job's own\n  claims alone.\n- For rclone-to-Drive specifics see `references\u002Frclone-drive.md`.\n- Before reporting \"stuck\" on a slow unit, drill one level deeper (files\n  inside the current repo\u002Fdir) and report the inner %.\n\n## 3. Status reports\n\n- Terse, in Spanish: phase %, total %, what is running now, what remains,\n  ETA. One or two lines, no narration.\n- An unchanged % between pings is a valid report — name the current unit\n  and confirm it is still transferring.\n\n## 4. Completion\n\n- Done = exit code 0 AND independent verification (destination counts match\n  source, spot-check key artifacts). A worker's self-report alone is not\n  evidence.\n- Final report: what landed where + counts. If the session changed a\n  standing condition (e.g. network constraint lifted), update memory.\n\n## Pitfalls\n\n- Never pipe a background job through `tail` for its final output — the\n  monitor then only sees buffered previews until the pipe closes.\n- A missing remote directory is not proof of failure — confirm the source\n  unit is non-empty first (some backends have no empty-dir concept).\n- Verify new rclone filters from the SAME root the transfer runs from —\n  `**\u002F` patterns match relative to root, so a check from elsewhere misleads.\n",{"name":5,"description":7},"main","688810f2886d212632acf81e532b24e483dd8b98","skills\u002Fdevops\u002Fbackground-transfer-monitor","https:\u002F\u002Fgithub.com\u002Fiberi22\u002Fskills","https:\u002F\u002Fgithub.com\u002Fiberi22","Senior WEB Full-Stack","2026-10-12 02:46:21",{"source":8,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add iberi22\u002Fskills --skill background-transfer-monitor",{"tool":37,"command":38},"bunx","bunx skills add iberi22\u002Fskills --skill background-transfer-monitor",{"tool":40,"command":41},"pnpm","pnpm dlx skills add iberi22\u002Fskills --skill background-transfer-monitor","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fiberi22\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fdevops\u002Fbackground-transfer-monitor\u002FSKILL.md",true,[],[46,52,59,65,71,77],{"skillNo":47,"name":48,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":49,"categories":50,"keywords":51,"publishedAt":19},"01M72TWQEQD46ZC9TRBAABF78P","web-design-guidelines","https:\u002F\u002Fgithub.com\u002Fiberi22\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fweb\u002Fweb-design-guidelines\u002FSKILL.md",[],[],{"skillNo":53,"name":54,"nameZh":6,"description":55,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":56,"categories":57,"keywords":58,"publishedAt":19},"01M72TWMQFTYD08DGXVAXRPPEB","blocked-page-recovery","Use when a fetch fails: 403\u002F429, paywall, WAF, bot wall. Recovers the page via archives and provenance-checked fallbacks.","https:\u002F\u002Fgithub.com\u002Fiberi22\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fweb\u002Fblocked-page-recovery\u002FSKILL.md",[],[],{"skillNo":60,"name":61,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":62,"categories":63,"keywords":64,"publishedAt":19},"01M72TVQMS3HCTX18C8T97WTQQ","studio-coach","https:\u002F\u002Fgithub.com\u002Fiberi22\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Ftools\u002Fstudio-coach\u002FSKILL.md",[],[],{"skillNo":66,"name":67,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":19},"01M72TVNA2PR9RZW0ZAXYP1G6J","src-generator","https:\u002F\u002Fgithub.com\u002Fiberi22\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Ftools\u002Fsrc-generator\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":19},"01M72TVEJHHB6SAT3R3TY9MJKS","sqlite-pro","https:\u002F\u002Fgithub.com\u002Fiberi22\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Ftools\u002Fsqlite-pro\u002FSKILL.md",[],[],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":19},"01M72TVC2EVBHQHCX96VTTYKB8","rigor-evaluator","Use when you need a quick heuristic rigor score (10 criteria, 0-2 each) for the features in a .gitcore\u002Ffeatures.json file, to decide which features are ready to ship.","https:\u002F\u002Fgithub.com\u002Fiberi22\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Ftools\u002Frigor-evaluator\u002FSKILL.md",[],[]]