[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H0AYZJS8DHWWYBSJXEJ6KD":3,"skill-same:01M6H0AYZJS8DHWWYBSJXEJ6KD":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},"01M6H0AYZJS8DHWWYBSJXEJ6KD","set-a-minimum-viable-price-floor",null,"Use when a deal or a client sits at the edge of profitability, or someone asks you to take work below cost. Sets a floor from variable cost plus a minimum contribution, and holds it or declines.","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-set-a-minimum-viable-price-floor\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-set-a-minimum-viable-price-floor\u002FSKILL.md",[],[20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"SET","price","set a minimum viable price floor","edge","work","use","cost","take","contribution","client","deal","it","you","at","when","2026-11-10 10:12:30",false,"---\nname: set-a-minimum-viable-price-floor\ndescription: Use when a deal or a client sits at the edge of profitability, or someone asks you to take work below cost. Sets a floor from variable cost plus a minimum contribution, and holds it or declines.\n---\n\n# Set a minimum viable price floor\n\nA price below variable cost is a loss on every unit, and no volume fixes it. Set the floor once from the cost structure, write it down, and decline or renegotiate anything under it rather than absorbing it as a favour.\n\n## Procedure\n\n1. Compute the hard floor: variable cost per unit, below which every sale destroys cash. If a unit costs $12.00 in materials and fulfilment, $12.00 is the line you never cross.\n2. Compute the soft floor: variable cost plus the contribution needed to cover fixed cost at the realistic volume. Fixed $84,000 over 10,500 units adds $8.00, so $20.00 is break-even and the floor for normal work.\n3. Apply the floor by decision tier: an incremental order with spare capacity may sit at the hard floor; a new commitment with dedicated cost must clear the soft floor.\n4. Price a suspect engagement through its full cost, not the headline rate. A fixed-fee job at $4,000 whose fully-loaded cost is $4,600 burns $600 before any overrun.\n\n       ```\n       python3 -c \"from decimal import Decimal as D; print(D('4000')-D('4600'))\"\n       # -600 -> decline, or reprice to cost plus margin\n       ```\n\n5. Check the floor against the walk-away: a client who demands $3,000 for work costing $3,800 has priced you below cost; the answer is a written decline, not a discount.\n6. Say no with the number: \"Our cost on this scope is $3,800; we cannot do it at $3,000.\" A cost-anchored refusal is a fact, not an insult, and keeps the relationship repairable.\n7. Offer a smaller scope at or above the floor instead of the same scope at a loss; that compromise nearly always exists.\n8. Watch for the disguised below-floor deal: a discount plus free change work plus delayed payment is a below-cost deal wearing three hats.\n9. Keep the floor in integer minor units and re-derive it when variable or fixed cost moves 10%; a stale floor is how a book slides into unprofitable work one favour at a time.\n10. Record declined engagements with the price offered and your cost, so the floor is defensible when someone asks why you walked away.\n\n## Pitfalls\n\n- Taking a deal below variable cost because the client is strategic; the loss is real on every unit.\n- Setting the floor from a rounded cost and then shaving just under it.\n- Letting change requests and slow payment turn a floor deal into a loss.\n- Mistaking discount plus free work plus a delayed invoice for a healthy deal.\n- Never revisiting the floor after costs move.\n- Storing the floor as a float, so a boundary deal slips under it by a cent.\n\n## Verification\n\n    ```\n    python3 -c \"from decimal import Decimal as D; print(D('4000')-D('4600'))\"\n    # -600 -> the engagement is below cost; decline or reprice\n    ```\n\nPass when the hard and soft floors and the deal's fully-loaded cost are all stated. Report the hard and soft floors, the deal's cost, and the written decision taken against it.\n","# Set a minimum viable price floor\n\nA price below variable cost is a loss on every unit, and no volume fixes it. Set the floor once from the cost structure, write it down, and decline or renegotiate anything under it rather than absorbing it as a favour.\n\n## Procedure\n\n1. Compute the hard floor: variable cost per unit, below which every sale destroys cash. If a unit costs $12.00 in materials and fulfilment, $12.00 is the line you never cross.\n2. Compute the soft floor: variable cost plus the contribution needed to cover fixed cost at the realistic volume. Fixed $84,000 over 10,500 units adds $8.00, so $20.00 is break-even and the floor for normal work.\n3. Apply the floor by decision tier: an incremental order with spare capacity may sit at the hard floor; a new commitment with dedicated cost must clear the soft floor.\n4. Price a suspect engagement through its full cost, not the headline rate. A fixed-fee job at $4,000 whose fully-loaded cost is $4,600 burns $600 before any overrun.\n\n       ```\n       python3 -c \"from decimal import Decimal as D; print(D('4000')-D('4600'))\"\n       # -600 -> decline, or reprice to cost plus margin\n       ```\n\n5. Check the floor against the walk-away: a client who demands $3,000 for work costing $3,800 has priced you below cost; the answer is a written decline, not a discount.\n6. Say no with the number: \"Our cost on this scope is $3,800; we cannot do it at $3,000.\" A cost-anchored refusal is a fact, not an insult, and keeps the relationship repairable.\n7. Offer a smaller scope at or above the floor instead of the same scope at a loss; that compromise nearly always exists.\n8. Watch for the disguised below-floor deal: a discount plus free change work plus delayed payment is a below-cost deal wearing three hats.\n9. Keep the floor in integer minor units and re-derive it when variable or fixed cost moves 10%; a stale floor is how a book slides into unprofitable work one favour at a time.\n10. Record declined engagements with the price offered and your cost, so the floor is defensible when someone asks why you walked away.\n\n## Pitfalls\n\n- Taking a deal below variable cost because the client is strategic; the loss is real on every unit.\n- Setting the floor from a rounded cost and then shaving just under it.\n- Letting change requests and slow payment turn a floor deal into a loss.\n- Mistaking discount plus free work plus a delayed invoice for a healthy deal.\n- Never revisiting the floor after costs move.\n- Storing the floor as a float, so a boundary deal slips under it by a cent.\n\n## Verification\n\n    ```\n    python3 -c \"from decimal import Decimal as D; print(D('4000')-D('4600'))\"\n    # -600 -> the engagement is below cost; decline or reprice\n    ```\n\nPass when the hard and soft floors and the deal's fully-loaded cost are all stated. Report the hard and soft floors, the deal's cost, and the written decision taken against it.\n",{"name":5,"description":7},"main","3df1d0d67b30ff15236561f8c0f9f06d33f42dfd","skills\u002Fpayments\u002F0xklen-set-a-minimum-viable-price-floor",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":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add jiayaoqijia\u002Fcryptoskill --skill set-a-minimum-viable-price-floor",{"tool":55,"command":56},"bunx","bunx skills add jiayaoqijia\u002Fcryptoskill --skill set-a-minimum-viable-price-floor",{"tool":58,"command":59},"pnpm","pnpm dlx skills add jiayaoqijia\u002Fcryptoskill --skill set-a-minimum-viable-price-floor","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-set-a-minimum-viable-price-floor\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","参考文档",358,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fpayments\u002F0xklen-set-a-minimum-viable-price-floor\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-set-a-minimum-viable-price-floor\u002FTRUST.auto.yaml",[78,106,129,147,160,170],{"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,125,126,127,128],"mexc spot websocket","spot","websocket","api","workflows","public","listen","streams","depth","keys","for","api keys","maintenance","protobuf",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":133,"sourceHtmlUrl":134,"categories":135,"keywords":136,"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",[],[137,116,138,139,140,141,142,126,125,124,143,144,145,120,146,119,118],"mexc spot rest","REST","admin","signing","Wallet","requests","actions","secure","data","orders",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":110,"licenseFileUrl":151,"sourceHtmlUrl":152,"categories":153,"keywords":154,"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",[],[155,156,117,157,158,127,125,159,123,122,120,119],"mexc futures websocket","futures","position","ping","subscriptions",{"skillNo":161,"name":162,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":163,"sourceHtmlUrl":164,"categories":165,"keywords":166,"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",[],[167,168,169],"refresh","0xklen version and refresh sanctions lists","version",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":174,"sourceHtmlUrl":175,"categories":176,"keywords":177,"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",[],[178,179,180,181,182,183,184,25,185,186,187],"tests","cover","verify tests cover changed lines","verify","coverage","pr","exercise","patch","code","share"]