[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7ABW798HTJZX3WMYFAQ769W":3,"skill-same:01M7ABW798HTJZX3WMYFAQ769W":48},{"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":26,"commitSha":27,"skillDirectory":28,"forksCount":29,"repositoryHtmlUrl":30,"repositoryHomepageUrl":6,"ownerHtmlUrl":31,"ownerBlogUrl":6,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M7ABW798HTJZX3WMYFAQ769W","project-api-validation",null,"Apply this repository's request-validation and structured error-catalog contract when public API acceptance or rejection changes.","SeoNaRu\u002Fnulnul-harness","SeoNaRu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F108949232?v=4","01M7ABTTRSCJGXQ8B13G0MXKD2","seonaru","01M7ABTTSFP28A12898CPBBH6T",34,"MIT","https:\u002F\u002Fgithub.com\u002FSeoNaRu\u002Fnulnul-harness\u002Fblob\u002Fmain\u002Fevals\u002Ffinal-pack-foundation-repair-live-proof\u002Ffixtures\u002Fdirect\u002F.agents\u002Fskills\u002Fproject-api-validation\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: project-api-validation\ndescription: Apply this repository's request-validation and structured error-catalog contract when public API acceptance or rejection changes.\nmetadata:\n  job: api-error-catalog-maintenance\n---\n\n# Project API validation\n\nFor public request-validation changes:\n\n1. Preserve absent, empty, and already accepted inputs.\n2. Reject invalid input with `errors.problem(field, code)` before queue, registry,\n   outbox, or other durable mutation.\n3. Name a new enum error `INVALID_\u003CUPPERCASE_FIELD>` and add it to\n   `contracts\u002Ferror-codes.json`, keeping that catalog sorted and unique.\n4. Never mutate the caller-owned request.\n5. Run the unit suite and `python3 tools\u002Fverify_error_catalog.py`.\n\nDo not use this capability for internal algorithms or release documentation.\n","# Project API validation\n\nFor public request-validation changes:\n\n1. Preserve absent, empty, and already accepted inputs.\n2. Reject invalid input with `errors.problem(field, code)` before queue, registry,\n   outbox, or other durable mutation.\n3. Name a new enum error `INVALID_\u003CUPPERCASE_FIELD>` and add it to\n   `contracts\u002Ferror-codes.json`, keeping that catalog sorted and unique.\n4. Never mutate the caller-owned request.\n5. Run the unit suite and `python3 tools\u002Fverify_error_catalog.py`.\n\nDo not use this capability for internal algorithms or release documentation.\n",{"name":5,"metadata":24,"description":7},{"job":25},"api-error-catalog-maintenance","main","2ef22b5630aaa5eb0f5bfd490a478a6d7f08a7e7","evals\u002Ffinal-pack-foundation-repair-live-proof\u002Ffixtures\u002Fdirect\u002F.agents\u002Fskills\u002Fproject-api-validation",3,"https:\u002F\u002Fgithub.com\u002FSeoNaRu\u002Fnulnul-harness","https:\u002F\u002Fgithub.com\u002FSeoNaRu","Developer","2026-09-10 15:21:10",{"source":8,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add SeoNaRu\u002Fnulnul-harness --skill project-api-validation",{"tool":40,"command":41},"bunx","bunx skills add SeoNaRu\u002Fnulnul-harness --skill project-api-validation",{"tool":43,"command":44},"pnpm","pnpm dlx skills add SeoNaRu\u002Fnulnul-harness --skill project-api-validation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSeoNaRu\u002Fnulnul-harness\u002Fblob\u002Fmain\u002Fevals\u002Ffinal-pack-foundation-repair-live-proof\u002Ffixtures\u002Fdirect\u002F.agents\u002Fskills\u002Fproject-api-validation\u002FSKILL.md",true,[],[49,56,63,69,74,79],{"skillNo":50,"name":51,"nameZh":6,"description":52,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":53,"categories":54,"keywords":55,"publishedAt":19},"01M7ABXK34RHN1DVNQ1RSDZVY6","nulnul-harness","Set up, inspect, or resume a project-local harness. Use for explicit harness requests, recurring work missing a usable contract, or measured capability failures. Skip ordinary edits and unrelated questions already covered by local instructions.","https:\u002F\u002Fgithub.com\u002FSeoNaRu\u002Fnulnul-harness\u002Fblob\u002Fmain\u002Fplugins\u002Fnulnul-harness\u002Fskills\u002Fnulnul-harness\u002FSKILL.md",[],[],{"skillNo":57,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":60,"categories":61,"keywords":62,"publishedAt":19},"01M7ABXHAY3B95P7V2ZQMB92PZ","project-release-docs","Preserve this repository's release documentation contract.","https:\u002F\u002Fgithub.com\u002FSeoNaRu\u002Fnulnul-harness\u002Fblob\u002Fmain\u002Fevals\u002Ffoundation-final-continuation\u002Ffixtures\u002Flifecycle\u002F.agents\u002Fskills\u002Fproject-release-docs\u002FSKILL.md",[],[],{"skillNo":64,"name":5,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":19},"01M7ABXFEXQVRQETFWY6G5NQ5X","Apply this repository's webhook request-validation and error-code contract when API acceptance or rejection behavior changes.","https:\u002F\u002Fgithub.com\u002FSeoNaRu\u002Fnulnul-harness\u002Fblob\u002Fmain\u002Fevals\u002Ffoundation-final-continuation\u002Ffixtures\u002Flifecycle\u002F.agents\u002Fskills\u002Fproject-api-validation\u002FSKILL.md",[],[],{"skillNo":70,"name":58,"nameZh":6,"description":59,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":19},"01M7ABXDYZ0Q0XR6QA6ZJTY0H5","https:\u002F\u002Fgithub.com\u002FSeoNaRu\u002Fnulnul-harness\u002Fblob\u002Fmain\u002Fevals\u002Ffinal-pack-live-proof\u002Ffixtures\u002Flifecycle\u002F.agents\u002Fskills\u002Fproject-release-docs\u002FSKILL.md",[],[],{"skillNo":75,"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":76,"categories":77,"keywords":78,"publishedAt":19},"01M7ABXBZQPNB85FB7THY8MGHA","https:\u002F\u002Fgithub.com\u002FSeoNaRu\u002Fnulnul-harness\u002Fblob\u002Fmain\u002Fevals\u002Ffinal-pack-live-proof\u002Ffixtures\u002Flifecycle\u002F.agents\u002Fskills\u002Fproject-api-validation\u002FSKILL.md",[],[],{"skillNo":80,"name":58,"nameZh":6,"description":59,"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},"01M7ABX9CT520X8HSTWRPME3Y6","https:\u002F\u002Fgithub.com\u002FSeoNaRu\u002Fnulnul-harness\u002Fblob\u002Fmain\u002Fevals\u002Ffinal-pack-live-proof\u002Ffixtures\u002Fdirect\u002F.agents\u002Fskills\u002Fproject-release-docs\u002FSKILL.md",[],[]]