[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HZ2BS2JDFPT4TVCKSZX2SN":3,"skill-same:01M6HZ2BS2JDFPT4TVCKSZX2SN":108},{"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":31,"publishedAt":52,"linkOnly":53,"markdownContent":54,"markdownBody":55,"frontMatter":56,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":63,"install":64,"resources":77},"01M6HZ2BS2JDFPT4TVCKSZX2SN","api-contract-review",null,"review request, response, event, and schema contracts for compatibility and consumer safety. use when http, openapi, asyncapi, protobuf, json schema, generated clients, or external integration behavior changes.","ldilov\u002Fharness-forge","ldilov","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25016670?v=4","01M6HYXAEJP0KYT2DF86WYN8QK","Lazar Dilov","01M6HYXAJETHAW5DD5TAAFEQ7D",6,"GPL-3.0","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fapi-contract-review\u002FSKILL.md",[18,23,28],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":29,"categoryName":30,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000037","律师与法务",[32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"contract review","api contract review","contract","api contract","review","api","Safety","generated","use","schema","openapi","contracts","compatibility","protobuf","json schema","asyncapi","event","for","changes","http","2026-11-10 10:12:30",false,"---\nname: api-contract-review\ndescription: review request, response, event, and schema contracts for compatibility and consumer safety. use when http, openapi, asyncapi, protobuf, json schema, generated clients, or external integration behavior changes.\n---\n\n# API Contract Review\n\n## Trigger Signals\n\n- the task changes HTTP routes, request or response shapes, headers, auth semantics, examples, or client SDKs\n- the repo edits OpenAPI, AsyncAPI, Protobuf, JSON Schema, or generated contract code\n- a versioning, deprecation, or compatibility question exists across providers and consumers\n\n## Inspect First\n\n- source-of-truth specs and the runtime handlers that implement them\n- schema validators, generated clients, examples, docs, and error-shape helpers\n- versioning and deprecation notes, auth requirements, and pagination or idempotency behavior\n- consumer code, integration tests, and release notes when a public contract changed\n\n## Workflow\n\n1. identify the canonical contract surface and compare it to the implementation\n2. classify the change by protocol: HTTP, event, schema-only, or wire-level\n3. evaluate backward compatibility for required fields, enums, defaults, errors, and behavior semantics\n4. verify examples, validation rules, and generated artifacts stay in sync\n5. emit a consumer-centered review with specific remediation or rollout guidance\n\n## Output Contract\n\n- changed contract summary grouped by endpoint, message, or schema\n- compatibility verdict with the precise breaking edges called out\n- consumer impact notes covering clients, codegen, docs, and deployment sequencing\n- follow-up actions for linting, versioning, deprecation, migration guides, or tests\n\n## Failure Modes\n\n- the runtime contract diverges from the checked-in spec and the source of truth is unclear\n- examples, docs, or generated clients are stale enough that contract behavior cannot be trusted\n- behavior semantics changed without any schema diff to explain it\n\n## Escalation\n\n- escalate when a breaking change lacks versioning, deprecation, or migration guidance\n- escalate when error semantics, auth requirements, or event-delivery guarantees change silently\n- escalate when wire compatibility for protobuf or event consumers is uncertain\n\n## References\n\n- `skills\u002Fapi-contract-review\u002Freferences\u002Fhttp-contract-checklist.md`\n- `skills\u002Fapi-contract-review\u002Freferences\u002Fschema-compatibility.md`\n- `skills\u002Fapi-contract-review\u002Freferences\u002Fevent-and-async-contracts.md`\n- `skills\u002Fapi-contract-review\u002Freferences\u002Fprotobuf-and-buf.md`\n- `skills\u002Fapi-contract-review\u002Freferences\u002Fstyle-and-linting.md`\n- `skills\u002Fapi-contract-review\u002Freferences\u002Freview-template.md`\n- `skills\u002Fapi-contract-review\u002Freferences\u002Fexamples.md`\n","# API Contract Review\n\n## Trigger Signals\n\n- the task changes HTTP routes, request or response shapes, headers, auth semantics, examples, or client SDKs\n- the repo edits OpenAPI, AsyncAPI, Protobuf, JSON Schema, or generated contract code\n- a versioning, deprecation, or compatibility question exists across providers and consumers\n\n## Inspect First\n\n- source-of-truth specs and the runtime handlers that implement them\n- schema validators, generated clients, examples, docs, and error-shape helpers\n- versioning and deprecation notes, auth requirements, and pagination or idempotency behavior\n- consumer code, integration tests, and release notes when a public contract changed\n\n## Workflow\n\n1. identify the canonical contract surface and compare it to the implementation\n2. classify the change by protocol: HTTP, event, schema-only, or wire-level\n3. evaluate backward compatibility for required fields, enums, defaults, errors, and behavior semantics\n4. verify examples, validation rules, and generated artifacts stay in sync\n5. emit a consumer-centered review with specific remediation or rollout guidance\n\n## Output Contract\n\n- changed contract summary grouped by endpoint, message, or schema\n- compatibility verdict with the precise breaking edges called out\n- consumer impact notes covering clients, codegen, docs, and deployment sequencing\n- follow-up actions for linting, versioning, deprecation, migration guides, or tests\n\n## Failure Modes\n\n- the runtime contract diverges from the checked-in spec and the source of truth is unclear\n- examples, docs, or generated clients are stale enough that contract behavior cannot be trusted\n- behavior semantics changed without any schema diff to explain it\n\n## Escalation\n\n- escalate when a breaking change lacks versioning, deprecation, or migration guidance\n- escalate when error semantics, auth requirements, or event-delivery guarantees change silently\n- escalate when wire compatibility for protobuf or event consumers is uncertain\n\n## References\n\n- `skills\u002Fapi-contract-review\u002Freferences\u002Fhttp-contract-checklist.md`\n- `skills\u002Fapi-contract-review\u002Freferences\u002Fschema-compatibility.md`\n- `skills\u002Fapi-contract-review\u002Freferences\u002Fevent-and-async-contracts.md`\n- `skills\u002Fapi-contract-review\u002Freferences\u002Fprotobuf-and-buf.md`\n- `skills\u002Fapi-contract-review\u002Freferences\u002Fstyle-and-linting.md`\n- `skills\u002Fapi-contract-review\u002Freferences\u002Freview-template.md`\n- `skills\u002Fapi-contract-review\u002Freferences\u002Fexamples.md`\n",{"name":5,"description":7},"main","27337828f396bcf279d7c4353a4a4f0cdc97659f","skills\u002Fapi-contract-review",1,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge","https:\u002F\u002Fgithub.com\u002Fldilov","2026-05-19 21:48:38",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add ldilov\u002Fharness-forge --skill api-contract-review",{"tool":70,"command":71},"bunx","bunx skills add ldilov\u002Fharness-forge --skill api-contract-review",{"tool":73,"command":74},"pnpm","pnpm dlx skills add ldilov\u002Fharness-forge --skill api-contract-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fapi-contract-review\u002FSKILL.md",true,[78,84,88,92,96,100,104],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"references\u002Fevent-and-async-contracts.md","REFERENCE","参考文档",556,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fapi-contract-review\u002Freferences\u002Fevent-and-async-contracts.md",{"path":85,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":86,"sourceHtmlUrl":87},"references\u002Fexamples.md",470,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fapi-contract-review\u002Freferences\u002Fexamples.md",{"path":89,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":90,"sourceHtmlUrl":91},"references\u002Fhttp-contract-checklist.md",625,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fapi-contract-review\u002Freferences\u002Fhttp-contract-checklist.md",{"path":93,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Fprotobuf-and-buf.md",617,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fapi-contract-review\u002Freferences\u002Fprotobuf-and-buf.md",{"path":97,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Freview-template.md",407,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fapi-contract-review\u002Freferences\u002Freview-template.md",{"path":101,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":102,"sourceHtmlUrl":103},"references\u002Fschema-compatibility.md",728,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fapi-contract-review\u002Freferences\u002Fschema-compatibility.md",{"path":105,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":106,"sourceHtmlUrl":107},"references\u002Fstyle-and-linting.md",748,"https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fapi-contract-review\u002Freferences\u002Fstyle-and-linting.md",[109,138,168,187,211,223],{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":118,"publishedAt":52},"01M6HZ7WE4DSYWPX0W2JX9BD8K","typescript-engineering","typescript and javascript engineering guidance seeded from the harness forge knowledge base. use when the repo or task is dominated by .ts, .tsx, package.json, tsconfig, node.js services, react, next.js, frontend tooling, or multi-package workspaces where type boundaries matter.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Ftypescript-engineering\u002FSKILL.md",[115],{"categoryNo":116,"categoryName":117,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[119,120,121,122,123,124,125,126,127,128,129,130,131,40,132,133,134,135,136,137],"typescript","engineering","typescript engineering","frontend","javascript","react","harness","package","forge","Next.js","knowledge","node","repo","workspaces","tsx","task","next","knowledge base","type",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":150,"publishedAt":52},"01M6HZ7QRWHQP72E7DPB6W5S6C","token-budget-optimizer","compact context, reuse existing runtime artifacts, and choose the smallest authoritative surface before expanding prompt history. use when the task is growing large, when earlier repo intelligence already exists, or when repeated rescans would waste tokens without adding new evidence.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Ftoken-budget-optimizer\u002FSKILL.md",[144,147],{"categoryNo":145,"categoryName":146,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":148,"categoryName":149,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000040","财务",[151,152,153,154,155,156,157,158,131,159,160,40,161,134,162,163,164,165,166,167],"Budget","optimizer","token","token budget","token budget optimizer","artifacts","choose","history","prompt","context","evidence","intelligence","compact","tokens","runtime","reuse","Existing",{"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":6,"sourceHtmlUrl":172,"categories":173,"keywords":177,"publishedAt":52},"01M6HZ7MMX3ZZP4KF2FVC2EHP0","test-strategy-and-coverage","Define right-sized test layers and coverage priorities for a change.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Ftest-strategy-and-coverage\u002FSKILL.md",[174],{"categoryNo":175,"categoryName":176,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[178,179,180,181,182,183,184,185,186,49],"test","strategy","coverage","test strategy","test strategy and coverage","change","priorities","define","layers",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":193,"publishedAt":52},"01M6HZ7HE9C6MGWT9JG17Z3Y3M","speckit-taskstoissues","Convert existing tasks into actionable, dependency-ordered GitHub issues for the feature based on available design artifacts.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fspeckit-taskstoissues\u002FSKILL.md",[],[194,195,196,197,198,199,200,156,201,202,203,204,205,206,207,208,209,210,49,167],"speckit taskstoissues","speckit","design","directory","project structure","tasks","github issues","issues","specify","convert","dependency","structure","project","commands","feature","actionable","kit",{"skillNo":212,"name":213,"nameZh":6,"description":214,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":215,"categories":216,"keywords":217,"publishedAt":52},"01M6HZ7E2NMYB9N2GKYVRF09AK","speckit-tasks","Generate an actionable, dependency-ordered tasks.md for the feature based on available design artifacts.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fspeckit-tasks\u002FSKILL.md",[],[199,218,195,196,197,219,198,220,156,202,204,205,206,207,208,209,221,222,210,49],"speckit tasks","github","generate","spec-kit","with",{"skillNo":224,"name":225,"nameZh":6,"description":226,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":227,"categories":228,"keywords":229,"publishedAt":52},"01M6HZ7AS0E880YSZN4FEFF6QF","speckit-specify","Create or update the feature specification from a natural language feature description.","https:\u002F\u002Fgithub.com\u002Fldilov\u002Fharness-forge\u002Fblob\u002Fmain\u002Fskills\u002Fspeckit-specify\u002FSKILL.md",[],[202,230,195,197,231,219,198,232,233,234,235,236,205,206,207,208,221,222,237,210],"speckit specify","spec","create","update","templates","specification","natural language","feature specification"]