[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CB97PQHFX72Z4H5P2PD34R":3,"skill-same:01M6CB97PQHFX72Z4H5P2PD34R":68},{"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":28,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":53,"install":54,"resources":67},"01M6CB97PQHFX72Z4H5P2PD34R","api-documentation",null,"API documentation standards for REST, GraphQL, gRPC, WebSocket, and SDKs","shahboura\u002Fagents-opencode","shahboura","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F210767?v=4","01M6C6WKTBT0NH92BEPQRHQSYM","Shehab El Hadidy","01M6C6WKYXG8AE68MCGBNE5ZFR",2,"MIT","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fapi-documentation\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37],"documentation","api","api documentation","grpc","REST","GraphQL","websocket","opencode","standards","2026-11-10 10:12:30",false,"---\nname: api-documentation\ndescription: API documentation standards for REST, GraphQL, gRPC, WebSocket, and SDKs\nlicense: MIT\ncompatibility: opencode\nmetadata:\n  author: shahboura\n  version: \"1.0.0\"\n  audience: developers\n  workflow: documentation\n---\n\n## What I do\n- Guide discovery and extraction of API surfaces from code (REST, GraphQL, gRPC, WebSocket, SDKs)\n- Define documentation structure for endpoints, authentication, parameters, responses, and errors\n- Provide OpenAPI 3.0 and Markdown format conventions\n- Enforce pagination, filtering, rate limiting, error codes, and changelog standards\n\n## When to use me\nUse when generating API documentation from code, standardizing format across services, or reviewing docs for completeness.\n\n## Key Rules\n\n### Discovery Phase\nAnalyze the codebase for:\n- **REST:** Route definitions, HTTP methods\u002Fpaths, request\u002Fresponse schemas, auth,\n  query\u002Fpath\u002Fbody params, status codes, rate limiting, pagination\n- **GraphQL:** Schema definitions (types, queries, mutations, subscriptions), resolvers, input types, validation, auth directives\n- **gRPC:** Service definitions, message types, streaming patterns\n- **WebSocket:** Event names, message schemas, connection lifecycle\n- **SDKs:** Public classes and methods, function signatures, configuration options\n\n### Output Format Selection\n- **OpenAPI 3.0** — REST APIs with tooling support\n- **Markdown** — Human-readable, version-controlled docs\n- **AsyncAPI** — Event-driven and WebSocket APIs\n- **GraphQL SDL** — Self-documenting schema\n- **JSDoc\u002FTSDoc** — Inline code comments\n\n### REST API Endpoint Documentation Format\nEach documented endpoint must include: HTTP method, path, summary, authentication requirement, and rate limit.\n\n**Parameter tables use this structure:**\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n\nProvide separate tables for query parameters, path parameters, headers, and request body fields.\n\n**Requests include:** method, full path, headers (Authorization, Content-Type), and body when applicable.\n\n**Responses include:** status code, description, and JSON body structure. Error responses documented in a separate table:\n\n| Status | Code | Description |\n|--------|------|-------------|\n\n**Common error codes section** must cover at minimum: 400 (validation), 401 (unauthorized), 403 (forbidden),\n404 (not found), 429 (rate limit), 500 (internal).\n\n### OpenAPI 3.0 Structure\nFor machine-readable specs, use this minimal structure:\n\n```yaml\nopenapi: 3.0.0\ninfo:\n  title: {API Name}\n  version: {semver}\npaths:\n  \u002Fresource:\n    get|post|put|delete:\n      summary: {description}\n      parameters: [...]\n      responses:\n        '{status}':\n          description: {description}\n          content:\n            application\u002Fjson:\n              schema:\n                $ref: '#\u002Fcomponents\u002Fschemas\u002F{Model}'\ncomponents:\n  schemas:\n    {Model}:\n      type: object\n      properties: {...}\n```\n\n### Pagination and Filtering\n- Use `page` (integer, default 1) and `limit` (integer, document max value) query parameters\n- Response includes a `meta` object: `{ page, limit, total, totalPages }`\n- Rate limit headers: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`\n- Filtering via query parameters matching field names\n- Sorting via `sort` parameter: prefix with `-` for descending, comma-separated for multiple fields\n- Document separate rate limits for authenticated vs unauthenticated access\n\n### Multi-Language Examples\nProvide at minimum cURL, JavaScript (fetch), and Python (requests) examples for each endpoint category.\n\n### Changelog\nMaintain versioned changelog entries with date, additions, deprecations, and breaking changes.\n\n## Validation Commands\n\nAfter generation, verify each checklist item:\n- [ ] All endpoints documented\n- [ ] Request and response examples included for each endpoint\n- [ ] Authentication clearly explained (method, token acquisition flow)\n- [ ] Error codes and status codes documented in dedicated tables\n- [ ] Rate limits and pagination conventions specified\n- [ ] Multi-language example code present (cURL, JS, Python minimum)\n- [ ] Changelog maintained with version dates\n- [ ] OpenAPI spec validates against the 3.0 schema (if generated)\n","## What I do\n- Guide discovery and extraction of API surfaces from code (REST, GraphQL, gRPC, WebSocket, SDKs)\n- Define documentation structure for endpoints, authentication, parameters, responses, and errors\n- Provide OpenAPI 3.0 and Markdown format conventions\n- Enforce pagination, filtering, rate limiting, error codes, and changelog standards\n\n## When to use me\nUse when generating API documentation from code, standardizing format across services, or reviewing docs for completeness.\n\n## Key Rules\n\n### Discovery Phase\nAnalyze the codebase for:\n- **REST:** Route definitions, HTTP methods\u002Fpaths, request\u002Fresponse schemas, auth,\n  query\u002Fpath\u002Fbody params, status codes, rate limiting, pagination\n- **GraphQL:** Schema definitions (types, queries, mutations, subscriptions), resolvers, input types, validation, auth directives\n- **gRPC:** Service definitions, message types, streaming patterns\n- **WebSocket:** Event names, message schemas, connection lifecycle\n- **SDKs:** Public classes and methods, function signatures, configuration options\n\n### Output Format Selection\n- **OpenAPI 3.0** — REST APIs with tooling support\n- **Markdown** — Human-readable, version-controlled docs\n- **AsyncAPI** — Event-driven and WebSocket APIs\n- **GraphQL SDL** — Self-documenting schema\n- **JSDoc\u002FTSDoc** — Inline code comments\n\n### REST API Endpoint Documentation Format\nEach documented endpoint must include: HTTP method, path, summary, authentication requirement, and rate limit.\n\n**Parameter tables use this structure:**\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n\nProvide separate tables for query parameters, path parameters, headers, and request body fields.\n\n**Requests include:** method, full path, headers (Authorization, Content-Type), and body when applicable.\n\n**Responses include:** status code, description, and JSON body structure. Error responses documented in a separate table:\n\n| Status | Code | Description |\n|--------|------|-------------|\n\n**Common error codes section** must cover at minimum: 400 (validation), 401 (unauthorized), 403 (forbidden),\n404 (not found), 429 (rate limit), 500 (internal).\n\n### OpenAPI 3.0 Structure\nFor machine-readable specs, use this minimal structure:\n\n```yaml\nopenapi: 3.0.0\ninfo:\n  title: {API Name}\n  version: {semver}\npaths:\n  \u002Fresource:\n    get|post|put|delete:\n      summary: {description}\n      parameters: [...]\n      responses:\n        '{status}':\n          description: {description}\n          content:\n            application\u002Fjson:\n              schema:\n                $ref: '#\u002Fcomponents\u002Fschemas\u002F{Model}'\ncomponents:\n  schemas:\n    {Model}:\n      type: object\n      properties: {...}\n```\n\n### Pagination and Filtering\n- Use `page` (integer, default 1) and `limit` (integer, document max value) query parameters\n- Response includes a `meta` object: `{ page, limit, total, totalPages }`\n- Rate limit headers: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `X-RateLimit-Reset`\n- Filtering via query parameters matching field names\n- Sorting via `sort` parameter: prefix with `-` for descending, comma-separated for multiple fields\n- Document separate rate limits for authenticated vs unauthenticated access\n\n### Multi-Language Examples\nProvide at minimum cURL, JavaScript (fetch), and Python (requests) examples for each endpoint category.\n\n### Changelog\nMaintain versioned changelog entries with date, additions, deprecations, and breaking changes.\n\n## Validation Commands\n\nAfter generation, verify each checklist item:\n- [ ] All endpoints documented\n- [ ] Request and response examples included for each endpoint\n- [ ] Authentication clearly explained (method, token acquisition flow)\n- [ ] Error codes and status codes documented in dedicated tables\n- [ ] Rate limits and pagination conventions specified\n- [ ] Multi-language example code present (cURL, JS, Python minimum)\n- [ ] Changelog maintained with version dates\n- [ ] OpenAPI spec validates against the 3.0 schema (if generated)\n",{"name":5,"license":15,"metadata":43,"description":7,"compatibility":36},{"author":9,"version":44,"audience":45,"workflow":29},"1.0.0","developers","main","9b951b5b2e5d07d427baff330db5deb2a8c67511",".opencode\u002Fskills\u002Fapi-documentation",0,"https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode","https:\u002F\u002Fagnts.elkodr.com\u002F","https:\u002F\u002Fgithub.com\u002Fshahboura","2026-11-05 13:30:42",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add shahboura\u002Fagents-opencode --skill api-documentation",{"tool":60,"command":61},"bunx","bunx skills add shahboura\u002Fagents-opencode --skill api-documentation",{"tool":63,"command":64},"pnpm","pnpm dlx skills add shahboura\u002Fagents-opencode --skill api-documentation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002F.opencode\u002Fskills\u002Fapi-documentation\u002FSKILL.md",true,[],[69,75,84,89,94,99],{"skillNo":70,"name":71,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":38},"01M6CBBX1C6NV7VY8XK21DV5FW","python","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fvalidate-agents\u002Fvalid\u002F.opencode\u002Fskills\u002Fpython\u002FSKILL.md",[],[71],{"skillNo":76,"name":77,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":38},"01M6CBBVB7W6ABJH8XP3Z8PPMK","docs-validation","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fvalidate-agents\u002Fvalid\u002F.opencode\u002Fskills\u002Fdocs-validation\u002FSKILL.md",[],[81,82,83],"docs","validation","docs validation",{"skillNo":85,"name":71,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":38},"01M6CBBT2WC781609MH5RN7KM7","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fvalidate-agents\u002Funknown-skill\u002F.opencode\u002Fskills\u002Fpython\u002FSKILL.md",[],[71],{"skillNo":90,"name":77,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":38},"01M6CBBRNY6TDRZ5627GC8436D","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fvalidate-agents\u002Funknown-skill\u002F.opencode\u002Fskills\u002Fdocs-validation\u002FSKILL.md",[],[81,82,83],{"skillNo":95,"name":71,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":38},"01M6CBBQDS170GBYA1CVW3DC5D","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fvalidate-agents\u002Finline-skill\u002F.opencode\u002Fskills\u002Fpython\u002FSKILL.md",[],[71],{"skillNo":100,"name":77,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":38},"01M6CBBP222WAW802YHY37F48A","https:\u002F\u002Fgithub.com\u002Fshahboura\u002Fagents-opencode\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fvalidate-agents\u002Finline-skill\u002F.opencode\u002Fskills\u002Fdocs-validation\u002FSKILL.md",[],[81,82,83]]