[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GY372SXKB4BGRW074VTFSE":3,"skill-same:01M6GY372SXKB4BGRW074VTFSE":77},{"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":16,"sourceHtmlUrl":17,"categories":18,"keywords":19,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":46,"ownerDescription":47,"updatedAt":48,"install":49,"resources":62},"01M6GY372SXKB4BGRW074VTFSE","convert-effort-days-to-calendar-time",null,"Use when a day-by-day work estimate is being read as elapsed days. Applies a focus factor for meetings, interruptions and on-call so the effort total becomes a realistic calendar duration.","jiayaoqijia\u002Fcryptoskill","jiayaoqijia","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1453879?v=4","01M6GMYTX7Q7S504VC6E756ENR","YQ","01M6GMYV1QKJ1CC75MTTGT9PR0",81,"MIT","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-convert-effort-days-to-calendar-time\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-convert-effort-days-to-calendar-time\u002FSKILL.md",[],[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"convert","calendar","time","convert effort days to calendar time","work","read","meetings","use","call","focus","as","factor","for","estimate","when","2026-11-10 10:12:30",false,"---\nname: convert-effort-days-to-calendar-time\ndescription: Use when a day-by-day work estimate is being read as elapsed days. Applies a focus factor for meetings, interruptions and on-call so the effort total becomes a realistic calendar duration.\n---\n\n# Convert effort days to calendar time\n\nOne \"dev-day\" of work is not one calendar day. Meetings, interruptions, reviews and on-call eat the clock, and a 20-effort-day plan quietly becomes six weeks. Convert explicitly, with a factor you can defend.\n\n## Procedure\n\n1. Start with raw effort: sum the task durations in person-days, e.g. 20 person-days.\n2. Pick a focus factor — the fraction of a working day spent on the actual task, logged in `notes\u002Fcapacity.md`. Realistic values run 0.5–0.8; a person juggling on-call or two projects sits near 0.5.\n3. Divide effort by the available-fraction to get calendar days per person:\n\n       python3 -c \"effort=20; focus=0.7; print('calendar days', round(effort\u002Ffocus,1))\"\n       calendar days 28.6\n\n4. Subtract known non-work days in the window: public holidays, a team offsite, release freeze. Do not assume a five-day week.\n5. Account for people, not just days. Two people on independent work nearly halve the time; two on the same small task do not (coordination cost) — model parallel work as a chain only when the pieces are truly independent.\n6. If the window includes a person's holiday, reduce their availability rather than pretending they are full-time.\n\n   Record each person's factor separately; a team average hides whoever is effectively part-time.\n7. Recompute after any schedule change; the factor is a property of the environment, not a constant.\n\n## Pitfalls\n\n- Reporting effort days as calendar days, the single most common source of \"but you said two weeks.\"\n- Using focus factor 1.0 for a person who is on-call or pairing, which is never achievable.\n- Assuming a 5-day week and 8 productive hours; realistically 6 or fewer hours are deep-work.\n- Splitting one small task across three people to \"compress\" it, when coordination makes it slower.\n- Forgetting that the estimate itself and code review consume the same hours, not extra ones.\n\n## Verification\n\n    python3 -c \"print(round(20\u002F0.7,1), 'vs', 20)\"\n    # 28.6 vs 20 — the calendar duration is longer than the effort; report both\n\nReport effort days, the focus factor used and why, and the resulting calendar duration with holidays removed.\n","# Convert effort days to calendar time\n\nOne \"dev-day\" of work is not one calendar day. Meetings, interruptions, reviews and on-call eat the clock, and a 20-effort-day plan quietly becomes six weeks. Convert explicitly, with a factor you can defend.\n\n## Procedure\n\n1. Start with raw effort: sum the task durations in person-days, e.g. 20 person-days.\n2. Pick a focus factor — the fraction of a working day spent on the actual task, logged in `notes\u002Fcapacity.md`. Realistic values run 0.5–0.8; a person juggling on-call or two projects sits near 0.5.\n3. Divide effort by the available-fraction to get calendar days per person:\n\n       python3 -c \"effort=20; focus=0.7; print('calendar days', round(effort\u002Ffocus,1))\"\n       calendar days 28.6\n\n4. Subtract known non-work days in the window: public holidays, a team offsite, release freeze. Do not assume a five-day week.\n5. Account for people, not just days. Two people on independent work nearly halve the time; two on the same small task do not (coordination cost) — model parallel work as a chain only when the pieces are truly independent.\n6. If the window includes a person's holiday, reduce their availability rather than pretending they are full-time.\n\n   Record each person's factor separately; a team average hides whoever is effectively part-time.\n7. Recompute after any schedule change; the factor is a property of the environment, not a constant.\n\n## Pitfalls\n\n- Reporting effort days as calendar days, the single most common source of \"but you said two weeks.\"\n- Using focus factor 1.0 for a person who is on-call or pairing, which is never achievable.\n- Assuming a 5-day week and 8 productive hours; realistically 6 or fewer hours are deep-work.\n- Splitting one small task across three people to \"compress\" it, when coordination makes it slower.\n- Forgetting that the estimate itself and code review consume the same hours, not extra ones.\n\n## Verification\n\n    python3 -c \"print(round(20\u002F0.7,1), 'vs', 20)\"\n    # 28.6 vs 20 — the calendar duration is longer than the effort; report both\n\nReport effort days, the focus factor used and why, and the resulting calendar duration with holidays removed.\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fpayments\u002F0xklen-convert-effort-days-to-calendar-time",17,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia","https:\u002F\u002Feth2030.com","Hardcore infra. Building @alt-research and applied cryptography.","2026-11-13 02:31:19",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill convert-effort-days-to-calendar-time",{"tool":55,"command":56},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill convert-effort-days-to-calendar-time",{"tool":58,"command":59},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill convert-effort-days-to-calendar-time","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-convert-effort-days-to-calendar-time\u002FSKILL.md",true,[63,67,73],{"path":64,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":16},"LICENSE","许可证",1063,{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"SOURCE.md","REFERENCE","参考文档",362,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-convert-effort-days-to-calendar-time\u002FSOURCE.md",{"path":74,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":75,"sourceHtmlUrl":76},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-convert-effort-days-to-calendar-time\u002FTRUST.auto.yaml",[78,106,128,146,159,169],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":82,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":35},"01M712C436EQYE43342Q4E7GG1","recipe-performance","Diagnose a specific MetaMask user flow's real-app performance and Sentry critical-user-flow telemetry with deterministic mm-harness recipes. Use for CUF boundaries, cold\u002Fwarm\u002Fbackground-resume behavior, latency regressions, lifecycle tags, duplicate or blocking network requests, long tasks, layout\u002Fpaint cost, screen redraws, React rerenders, or browser trace analysis where tests alone cannot prove the real app.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-recipe-performance\u002FSKILL.md",[],[86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":111,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":35},"01M70XT2F8A5CQZ81JBP98KSW3","mexc-spot-websocket","MEXC Spot WebSocket workflows for public streams, protobuf handling, depth maintenance, listen keys, and private streams without exposing API keys.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-websocket\u002FSKILL.md",[],[115,116,117,118,119,120,121,122,123,124,32,125,126,127],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","api keys","maintenance","protobuf",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":132,"sourceHtmlUrl":133,"categories":134,"keywords":135,"publishedAt":35},"01M70XT0MBXN3WZY1BKN0CPNKR","mexc-spot-rest","MEXC Spot REST workflows for public data, signed account requests, orders, wallet\u002Fadmin actions, and secure signing without exposing API keys.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-spot-rest\u002FSKILL.md",[],[136,116,137,138,139,140,141,125,32,124,142,143,144,120,145,119,118],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":147,"name":148,"nameZh":6,"description":149,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":150,"sourceHtmlUrl":151,"categories":152,"keywords":153,"publishedAt":35},"01M70XSYSVZ2N0N91XCAR2CAK0","mexc-futures-websocket","MEXC Futures WebSocket workflows for public streams, private account\u002Forder\u002Fposition streams, ping\u002Fpong, subscriptions, and depth maintenance.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fexchanges\u002Fmncrftfrcnm-mexc-futures-websocket\u002FSKILL.md",[],[154,155,117,156,157,126,32,158,123,122,120,119],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":160,"name":161,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":162,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":35},"01M6H0ZWHVE5W04WG2DKQE2SQC","0xklen-version-and-refresh-sanctions-lists","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-version-and-refresh-sanctions-lists\u002FSKILL.md",[],[166,167,168],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":170,"name":171,"nameZh":6,"description":172,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":173,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":35},"01M6H0Z28Q3R8J0S799GJQWXM3","verify-tests-cover-changed-lines","Use when a PR adds code that the existing suite may not exercise. Measures patch coverage — the share of newly changed lines hit by tests — before approving.","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-verify-tests-cover-changed-lines\u002FSKILL.md",[],[177,178,179,180,181,182,183,27,184,185,186],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","code","share"]