[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H09GDVFAT7HVBCBE8JMEYG":3,"skill-same:01M6H09GDVFAT7HVBCBE8JMEYG":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":16,"sourceHtmlUrl":17,"categories":18,"keywords":19,"publishedAt":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":44,"ownerDescription":45,"updatedAt":46,"install":47,"resources":60},"01M6H09GDVFAT7HVBCBE8JMEYG","separate-milestone-from-deadline",null,"Use when a date is being treated as both a progress marker and a hard cutoff. Tags each date as milestone or deadline so a slip triggers re-planning, not panic, and a deadline triggers a scope cut.","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-separate-milestone-from-deadline\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-separate-milestone-from-deadline\u002FSKILL.md",[],[20,21,22,23,24,25,26,27,28,29,30,31,32],"milestone","separate milestone from deadline","planning","use","triggers","as","cut","progress","scope","tags","re","marker","when","2026-11-10 10:12:30",false,"---\nname: separate-milestone-from-deadline\ndescription: Use when a date is being treated as both a progress marker and a hard cutoff. Tags each date as milestone or deadline so a slip triggers re-planning, not panic, and a deadline triggers a scope cut.\n---\n\n# Separate milestone from deadline\n\nA milestone is a projection you can move; a deadline is a constraint that moves you. Blur them and every slip reads as an emergency, and the only lever left is optimism. Label each date and attach the response that fits it.\n\n## Procedure\n\n1. In `notes\u002Fplan.md`, tag every date. Use an explicit field so it is machine-checkable:\n\n       - [ ] M2 2026-03-14 milestone   # projection, can move\n       - [ ] launch 2026-04-01 deadline  # constraint, cannot move\n\n2. Define the response per tag before the slip happens: a **milestone** that misses triggers a re-plan and a new date; a **deadline** that is at risk triggers a scope cut until it fits.\n3. Never let a milestone drift into a deadline by being repeated. If a date has been quoted to customers or a contract, it is a deadline — re-tag it and write down what that means.\n4. Keep at most one or two true deadlines in a plan. More than that means the plan is over-constrained and something else has to give.\n5. Count them so the split stays honest:\n\n       grep -c 'deadline' notes\u002Fplan.md\n       grep -c 'milestone' notes\u002Fplan.md\n\n6. When a milestone moves, the plan's end date moves with it unless a buffer absorbs it. Say which.\n7. When a deadline is fixed, re-derive scope from the date backwards — do not assert both will hold.\n\n## Pitfalls\n\n- Calling everything a deadline, which makes every projection a crisis and destroys the plan's credibility.\n- Repeatedly re-dating a milestone while telling stakeholders it is unchanged.\n- A deadline with no scope lever attached, so the only way to \"make it\" is unpaid overtime or hidden risk.\n- Forgetting that an external commitment (contract, marketing date, dependency) silently converts a milestone into a deadline.\n- Reporting milestone status to people who heard a deadline, so a forecast slip is received as a broken promise.\n\n## Verification\n\n    grep -c 'deadline' notes\u002Fplan.md; grep -c 'milestone' notes\u002Fplan.md\n    # passes when every date carries a tag and deadlines are the minority of dates\n\nReport each date with its tag, the response rule for each, and the count of true deadlines in the plan.\n","# Separate milestone from deadline\n\nA milestone is a projection you can move; a deadline is a constraint that moves you. Blur them and every slip reads as an emergency, and the only lever left is optimism. Label each date and attach the response that fits it.\n\n## Procedure\n\n1. In `notes\u002Fplan.md`, tag every date. Use an explicit field so it is machine-checkable:\n\n       - [ ] M2 2026-03-14 milestone   # projection, can move\n       - [ ] launch 2026-04-01 deadline  # constraint, cannot move\n\n2. Define the response per tag before the slip happens: a **milestone** that misses triggers a re-plan and a new date; a **deadline** that is at risk triggers a scope cut until it fits.\n3. Never let a milestone drift into a deadline by being repeated. If a date has been quoted to customers or a contract, it is a deadline — re-tag it and write down what that means.\n4. Keep at most one or two true deadlines in a plan. More than that means the plan is over-constrained and something else has to give.\n5. Count them so the split stays honest:\n\n       grep -c 'deadline' notes\u002Fplan.md\n       grep -c 'milestone' notes\u002Fplan.md\n\n6. When a milestone moves, the plan's end date moves with it unless a buffer absorbs it. Say which.\n7. When a deadline is fixed, re-derive scope from the date backwards — do not assert both will hold.\n\n## Pitfalls\n\n- Calling everything a deadline, which makes every projection a crisis and destroys the plan's credibility.\n- Repeatedly re-dating a milestone while telling stakeholders it is unchanged.\n- A deadline with no scope lever attached, so the only way to \"make it\" is unpaid overtime or hidden risk.\n- Forgetting that an external commitment (contract, marketing date, dependency) silently converts a milestone into a deadline.\n- Reporting milestone status to people who heard a deadline, so a forecast slip is received as a broken promise.\n\n## Verification\n\n    grep -c 'deadline' notes\u002Fplan.md; grep -c 'milestone' notes\u002Fplan.md\n    # passes when every date carries a tag and deadlines are the minority of dates\n\nReport each date with its tag, the response rule for each, and the count of true deadlines in the plan.\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fpayments\u002F0xklen-separate-milestone-from-deadline",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-15 02:28:10",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill separate-milestone-from-deadline",{"tool":53,"command":54},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill separate-milestone-from-deadline",{"tool":56,"command":57},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill separate-milestone-from-deadline","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-separate-milestone-from-deadline\u002FSKILL.md",true,[61,65,71],{"path":62,"resourceType":62,"resourceTypeDesc":63,"sizeBytes":64,"sourceHtmlUrl":16},"LICENSE","许可证",1063,{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"SOURCE.md","REFERENCE","参考文档",358,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-separate-milestone-from-deadline\u002FSOURCE.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-separate-milestone-from-deadline\u002FTRUST.auto.yaml",[76,104,127,145,158,168],{"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":80,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":33},"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",[],[84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],"performance","recipe performance","recipe","mm","sentry","harness","app","deterministic","recipes","flow","cold","critical","analysis","tasks","react","browser","layout","screen","network","metamask",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":109,"sourceHtmlUrl":110,"categories":111,"keywords":112,"publishedAt":33},"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",[],[113,114,115,116,117,118,119,120,121,122,123,124,125,126],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":131,"sourceHtmlUrl":132,"categories":133,"keywords":134,"publishedAt":33},"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",[],[135,114,136,137,138,139,140,124,123,122,141,142,143,118,144,117,116],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":108,"licenseFileUrl":149,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":33},"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",[],[153,154,115,155,156,125,123,157,121,120,118,117],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":159,"name":160,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":161,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":33},"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",[],[165,166,167],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":172,"sourceHtmlUrl":173,"categories":174,"keywords":175,"publishedAt":33},"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",[],[176,177,178,179,180,181,182,23,183,184,185],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","code","share"]