[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6GKBVEY0J7APQJARJTJN52H":3,"skill-same:01M6GKBVEY0J7APQJARJTJN52H":100},{"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":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M6GKBVEY0J7APQJARJTJN52H","http-status-codes",null,"Use when choosing, reviewing, or explaining HTTP response codes — in an API, OpenAPI spec, controller, middleware, or client retry logic. Triggers on: \"which status code\", \"400 vs 422\", \"401 vs 403\", \"429 vs 503\", \"409 vs 412\", \"201 vs 202 vs 204\", \"303 vs 307 vs 308\", or when a handler's status code looks wrong.","dekoza\u002Foh-my-slop","dekoza","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F210980?v=4","01M6GK5KFK2SJQ364J2SR2P57S","Dominik Kozaczko","01M6GK5KP5PAA51JVTXYXHN66N",4,"Unlicense","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Fhttp-status-codes\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"status","http status codes","http status","codes","http","controller","openapi","api","use","logic","triggers","client","openapi spec","code","middleware","retry","429","which","spec","2026-11-10 10:12:30",false,"---\nname: http-status-codes\ndescription: >\n  Use when choosing, reviewing, or explaining HTTP response codes — in an API,\n  OpenAPI spec, controller, middleware, or client retry logic. Triggers on: \"which\n  status code\", \"400 vs 422\", \"401 vs 403\", \"429 vs 503\", \"409 vs 412\", \"201 vs 202\n  vs 204\", \"303 vs 307 vs 308\", or when a handler's status code looks wrong.\n---\n# HTTP Status Codes Reference\n\nUse this skill for standards-based HTTP status code selection in API and client design. It exists to stop the lazy pattern where every client mistake becomes `400` and every temporary outage becomes `500`. Read only the smallest reference file needed for the task.\n\n## Critical Rules\n1. **Prefer the most specific standard code** - `400` is a fallback, not the default for every client-side failure.\n2. **Separate authentication from authorization** - `401` means missing or invalid credentials and should challenge the client; `403` means the client is known but not allowed.\n3. **Separate malformed from semantically invalid** - `400` covers malformed syntax\u002Fframing; `422` covers well-formed content that fails validation or instructions.\n4. **Use conflict and precondition codes intentionally** - `409`, `412`, and `428` are not interchangeable.\n5. **Return the headers that make the code complete** - `401` needs `WWW-Authenticate`, `405` needs `Allow`, redirects need `Location`, and `Retry-After` is strongly recommended for `429` or `503` when you know the wait.\n6. **Do not lie with `202`** - `202 Accepted` means the work is not finished yet.\n7. **Do not hide media-type problems inside `400`** - unsupported request formats often belong in `415`.\n8. **Treat `429` and `503` as different signals** - one tells a specific client to slow down; the other says the service is temporarily unavailable.\n9. **Keep compatibility explicit** - if an existing public API intentionally keeps broader historical codes, call out the deviation instead of pretending it is ideal HTTP semantics.\n10. **Do not design public APIs around vendor\u002Fprivate codes** - keep nginx, Cloudflare, IIS, Laravel, and similar private codes out of the core contract.\n\n## Reference Map\n| File | Domain | Use when you need |\n|------|--------|-------------------|\n| `decision-rules.md` | High-value choices | Fast answers for confused pairs\u002Ftriples and a selection rubric |\n| `success-redirects.md` | 2xx + 3xx | Creation, async processing, no-content responses, cache-aware responses, redirects, HEAD |\n| `client-errors.md` | 4xx | Auth, permissions, validation, conflicts, media type, throttling, operational client errors |\n| `server-errors.md` | 5xx | Internal failures, upstream failures, temporary outages, retry behavior, mid-stream failures |\n| `rare-and-nonstandard.md` | Appendix | Rare standards, WebDAV-heavy codes, deprecated or unused codes, vendor\u002Fprivate warnings |\n| `REFERENCE.md` | Index | Cross-file routing for mixed or unclear tasks |\n\n## Task Routing\n- **Choosing between two or three plausible codes** -> `references\u002Fdecision-rules.md`\n- **Designing POST, PUT, PATCH, or DELETE success responses** -> `references\u002Fsuccess-redirects.md`\n- **Reviewing auth, validation, or client-error handling** -> `references\u002Fclient-errors.md`\n- **Reviewing retry policies, gateway failures, or maintenance behavior** -> `references\u002Fserver-errors.md`\n- **Interpreting obscure codes from logs or third-party docs** -> `references\u002Frare-and-nonstandard.md`\n- **Unsure where to start** -> `references\u002FREFERENCE.md`\n\n## When Not To Use This Skill\n- **Framework-specific exception wiring** - This skill decides what the response should mean; pair it with the relevant stack skill to implement that meaning in middleware or handlers.\n- **Project-specific compatibility decisions** - Whether an existing API may break its historical contract is a project call, not an HTTP-semantics call (Rule 9 only requires naming the deviation).\n","# HTTP Status Codes Reference\n\nUse this skill for standards-based HTTP status code selection in API and client design. It exists to stop the lazy pattern where every client mistake becomes `400` and every temporary outage becomes `500`. Read only the smallest reference file needed for the task.\n\n## Critical Rules\n1. **Prefer the most specific standard code** - `400` is a fallback, not the default for every client-side failure.\n2. **Separate authentication from authorization** - `401` means missing or invalid credentials and should challenge the client; `403` means the client is known but not allowed.\n3. **Separate malformed from semantically invalid** - `400` covers malformed syntax\u002Fframing; `422` covers well-formed content that fails validation or instructions.\n4. **Use conflict and precondition codes intentionally** - `409`, `412`, and `428` are not interchangeable.\n5. **Return the headers that make the code complete** - `401` needs `WWW-Authenticate`, `405` needs `Allow`, redirects need `Location`, and `Retry-After` is strongly recommended for `429` or `503` when you know the wait.\n6. **Do not lie with `202`** - `202 Accepted` means the work is not finished yet.\n7. **Do not hide media-type problems inside `400`** - unsupported request formats often belong in `415`.\n8. **Treat `429` and `503` as different signals** - one tells a specific client to slow down; the other says the service is temporarily unavailable.\n9. **Keep compatibility explicit** - if an existing public API intentionally keeps broader historical codes, call out the deviation instead of pretending it is ideal HTTP semantics.\n10. **Do not design public APIs around vendor\u002Fprivate codes** - keep nginx, Cloudflare, IIS, Laravel, and similar private codes out of the core contract.\n\n## Reference Map\n| File | Domain | Use when you need |\n|------|--------|-------------------|\n| `decision-rules.md` | High-value choices | Fast answers for confused pairs\u002Ftriples and a selection rubric |\n| `success-redirects.md` | 2xx + 3xx | Creation, async processing, no-content responses, cache-aware responses, redirects, HEAD |\n| `client-errors.md` | 4xx | Auth, permissions, validation, conflicts, media type, throttling, operational client errors |\n| `server-errors.md` | 5xx | Internal failures, upstream failures, temporary outages, retry behavior, mid-stream failures |\n| `rare-and-nonstandard.md` | Appendix | Rare standards, WebDAV-heavy codes, deprecated or unused codes, vendor\u002Fprivate warnings |\n| `REFERENCE.md` | Index | Cross-file routing for mixed or unclear tasks |\n\n## Task Routing\n- **Choosing between two or three plausible codes** -> `references\u002Fdecision-rules.md`\n- **Designing POST, PUT, PATCH, or DELETE success responses** -> `references\u002Fsuccess-redirects.md`\n- **Reviewing auth, validation, or client-error handling** -> `references\u002Fclient-errors.md`\n- **Reviewing retry policies, gateway failures, or maintenance behavior** -> `references\u002Fserver-errors.md`\n- **Interpreting obscure codes from logs or third-party docs** -> `references\u002Frare-and-nonstandard.md`\n- **Unsure where to start** -> `references\u002FREFERENCE.md`\n\n## When Not To Use This Skill\n- **Framework-specific exception wiring** - This skill decides what the response should mean; pair it with the relevant stack skill to implement that meaning in middleware or handlers.\n- **Project-specific compatibility decisions** - Whether an existing API may break its historical contract is a project call, not an HTTP-semantics call (Rule 9 only requires naming the deviation).\n",{"name":5,"description":7},"main","8c687fa2c077e1cd3ff8e5b2912c28fd443bc675","skills\u002Freference\u002Fhttp-status-codes",0,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop","https:\u002F\u002Fgithub.com\u002Fdekoza","https:\u002F\u002Fqoto.org\u002F@minder","Plz send BTC: 32UQpSVbcYXdfZnbyPuPvYi7rXvHcueqi1","2026-10-28 00:52:41",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add dekoza\u002Foh-my-slop --skill http-status-codes",{"tool":58,"command":59},"bunx","bunx skills add dekoza\u002Foh-my-slop --skill http-status-codes",{"tool":61,"command":62},"pnpm","pnpm dlx skills add dekoza\u002Foh-my-slop --skill http-status-codes","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Fhttp-status-codes\u002FSKILL.md",true,[66,72,76,80,84,88,92,96],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"evals\u002Fevals.json","REFERENCE","参考文档",6346,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Fhttp-status-codes\u002Fevals\u002Fevals.json",{"path":73,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":74,"sourceHtmlUrl":75},"evals\u002Ftrigger-evals.json",3499,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Fhttp-status-codes\u002Fevals\u002Ftrigger-evals.json",{"path":77,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fclient-errors.md",7136,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Fhttp-status-codes\u002Freferences\u002Fclient-errors.md",{"path":81,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fdecision-rules.md",9870,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Fhttp-status-codes\u002Freferences\u002Fdecision-rules.md",{"path":85,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Frare-and-nonstandard.md",5493,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Fhttp-status-codes\u002Freferences\u002Frare-and-nonstandard.md",{"path":89,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002FREFERENCE.md",1966,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Fhttp-status-codes\u002Freferences\u002FREFERENCE.md",{"path":93,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Fserver-errors.md",5129,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Fhttp-status-codes\u002Freferences\u002Fserver-errors.md",{"path":97,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Fsuccess-redirects.md",5774,"https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Freference\u002Fhttp-status-codes\u002Freferences\u002Fsuccess-redirects.md",[101,127,151,168,182,207],{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":38},"01M6GKGSV5GC23S7CZ8XMXQF7C","wizard","Generate an interactive bash wizard that walks a human through a manual procedure — third-party setup, credential provisioning, a one-off migration — opening URLs, capturing values, confirming each step, and writing .env files and CI secrets (GitHub and Gitea\u002FForgejo Actions).","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Fwizard\u002FSKILL.md",[],[103,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126],"true","interactive","manual","gitea","env","third-party","human","credential","files","migration","Bash","secrets","provisioning","ci","actions","generate","setup","github","writing",{"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":131,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":139,"publishedAt":38},"01M6GKFC9YYQ4CC6N7YAW7BWW1","restore-test-pyramid","Analyze the project's E2E suite and push every assertion that doesn't need a real browser down to a faster integration or unit test, proving each migration honest before thinning E2E.","MIT","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Frestore-test-pyramid\u002FSKILL.md",[134],{"categoryNo":135,"categoryName":136,"taxonomyType":137,"taxonomyTypeDesc":138},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[140,141,142,143,144,117,145,146,147,148,149,150,108],"restore test pyramid","test","restore","real browser","analyze","push","project","unit","e2e","integration","browser",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":38},"01M6GKEW0YH8ZSSN1PT543TDNZ","ponytail-debt","Harvest SHORTCUT markers from the codebase and report them grouped by file, flagging any missing upgrade paths.","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Fponytail-debt\u002FSKILL.md",[],[158,159,160,108,161,162,163,164,165,166,167],"ponytail","ponytail debt","missing","shortcut","paths","markers","upgrade","file","report","harvest",{"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":131,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":38},"01M6GKE8R93K0Z9XCM0MVCMS82","humanify","Repair an inherited or human-blocked ticket for agent implementation, or finish its explicit human-only outcome.","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Fhumanify\u002FSKILL.md",[],[170,175,108,176,177,178,114,179,180,181],"finish","ticket","agent implementation","repair","implementation","only","outcome",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":131,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":188,"publishedAt":38},"01M6GKDQYP2QQZCVE34AAJW7KC","fix-pr","Repair an existing pull request's review findings and target-branch conflicts, verify the result, and update the same open PR.","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Ffix-pr\u002FSKILL.md",[],[189,190,191,192,193,194,195,196,197,198,199,200,201,202,108,203,204,178,205,206],"pr","fix","fix pr","testing","open","verify","pull","update","pull request","merge","workflow","tdd","review","branch","merge-conflicts","review findings","conflicts","discipline",{"skillNo":208,"name":209,"nameZh":6,"description":210,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":211,"categories":212,"keywords":213,"publishedAt":38},"01M6GKDMR2V617S1V8APDT4R2B","feature-milestones","Reconstruct a fragmented backlog as finishable feature milestones with explicit delivery boundaries and an approval-gated tracker update.","https:\u002F\u002Fgithub.com\u002Fdekoza\u002Foh-my-slop\u002Fblob\u002Fmain\u002Fskills\u002Fworkflow\u002Ffeature-milestones\u002FSKILL.md",[],[214,215,196,108,216,217,218,219,220,221,222],"feature","feature milestones","with","as","delivery","backlog","gated","tracker","approval"]