[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EPZ2ZHC0K8SCHNV6K2GDTT":3,"skill-same:01M6EPZ2ZHC0K8SCHNV6K2GDTT":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":28,"publishedAt":47,"linkOnly":48,"markdownContent":49,"markdownBody":50,"frontMatter":51,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":58,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6EPZ2ZHC0K8SCHNV6K2GDTT","api-documentation-generator",null,"Generates OpenAPI\u002FSwagger documentation from API route files. Use when working with REST APIs, Express routes, FastAPI endpoints, or when user requests API documentation.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fcrazydubya\u002Fapi-documentation-generator\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,38,39,40,41,42,43,44,45,46],"api documentation generator","api","api documentation","documentation","user","express","swagger","route","endpoints","files","use","fastapi","edit","write","read","grep","openapi","REST","2026-11-10 10:12:30",false,"---\nname: api-documentation-generator\ndescription: Generates OpenAPI\u002FSwagger documentation from API route files. Use when working with REST APIs, Express routes, FastAPI endpoints, or when user requests API documentation.\nallowed-tools: Read, Grep, Glob, Write, Edit\n---\n\n# API Documentation Generator\n\nThis skill automatically generates OpenAPI 3.0 (Swagger) documentation from API route files in your codebase.\n\n## When to Use This Skill\n\n- User asks to generate API documentation\n- Working with REST API endpoints\n- Need to create or update OpenAPI\u002FSwagger specs\n- Setting up API documentation for Express, FastAPI, Flask, NestJS, or similar frameworks\n\n## Instructions\n\n### 1. Discover API Routes\n\nSearch the codebase for API route definitions:\n\n- **Express\u002FNode.js**: Look for `app.get()`, `app.post()`, `router.get()`, etc.\n- **FastAPI\u002FPython**: Look for `@app.get()`, `@router.post()`, decorators\n- **Flask**: Look for `@app.route()` decorators\n- **NestJS**: Look for `@Get()`, `@Post()`, `@Controller()` decorators\n- **Rails**: Look for routes in `config\u002Froutes.rb`\n\nUse Glob to find route files (e.g., `**\u002F*routes*.{js,ts,py}`, `**\u002Fcontrollers\u002F**\u002F*.{js,ts}`)\n\n### 2. Analyze Route Patterns\n\nFor each discovered route, extract:\n\n- **HTTP Method**: GET, POST, PUT, PATCH, DELETE\n- **Path**: The endpoint URL (e.g., `\u002Fapi\u002Fusers\u002F:id`)\n- **Parameters**: Path params, query params, request body\n- **Response**: Expected response structure\n- **Authentication**: Whether auth is required\n- **Description**: Comments or docstrings near the route\n\n### 3. Generate OpenAPI Specification\n\nCreate or update an OpenAPI 3.0 specification file (typically `openapi.yaml` or `swagger.json`):\n\n- Start with the template from `templates\u002Fopenapi-3.0.yaml`\n- Map each route to an OpenAPI path object\n- Define request\u002Fresponse schemas using JSON Schema\n- Include parameter definitions (path, query, body)\n- Add authentication schemes if detected (Bearer, API Key, OAuth2)\n- Group endpoints by tags (e.g., \"Users\", \"Products\", \"Auth\")\n\n### 4. Validate Completeness\n\nCheck that the generated documentation includes:\n\n- All discovered endpoints\n- Accurate HTTP methods and paths\n- Request\u002Fresponse examples where possible\n- Error responses (400, 401, 404, 500, etc.)\n- Security requirements\n\n### 5. Output Location\n\n- Save as `openapi.yaml` in the project root, or\n- Place in `docs\u002F` or `api\u002F` directory if those exist\n- Ask user for preferred location if unclear\n\n## Framework-Specific Notes\n\n### Express\u002FNode.js\n- Check for route middleware that might affect auth\u002Fvalidation\n- Look for request validators (Joi, express-validator, etc.)\n- Extract JSDoc comments for endpoint descriptions\n\n### FastAPI\n- FastAPI auto-generates OpenAPI docs, but this skill can enhance them\n- Extract Pydantic models for request\u002Fresponse schemas\n- Check for `response_model` and `status_code` parameters\n\n### NestJS\n- Look for DTOs (Data Transfer Objects) for schemas\n- Check for Swagger decorators (`@ApiOperation`, `@ApiResponse`)\n- Extract metadata from controller and method decorators\n\n## Best Practices\n\n1. **Use existing schemas**: If the codebase has TypeScript interfaces, Pydantic models, or similar, use them for accurate schemas\n2. **Include examples**: Add request\u002Fresponse examples from tests if available\n3. **Group logically**: Organize endpoints by resource or feature area using tags\n4. **Version appropriately**: Use the API version from the codebase (e.g., \"1.0.0\")\n5. **Add descriptions**: Use code comments\u002Fdocstrings for endpoint descriptions\n\n## Supporting Files\n\n- `templates\u002Fopenapi-3.0.yaml`: Base OpenAPI template\n- `examples.md`: Framework-specific examples\n","# API Documentation Generator\n\nThis skill automatically generates OpenAPI 3.0 (Swagger) documentation from API route files in your codebase.\n\n## When to Use This Skill\n\n- User asks to generate API documentation\n- Working with REST API endpoints\n- Need to create or update OpenAPI\u002FSwagger specs\n- Setting up API documentation for Express, FastAPI, Flask, NestJS, or similar frameworks\n\n## Instructions\n\n### 1. Discover API Routes\n\nSearch the codebase for API route definitions:\n\n- **Express\u002FNode.js**: Look for `app.get()`, `app.post()`, `router.get()`, etc.\n- **FastAPI\u002FPython**: Look for `@app.get()`, `@router.post()`, decorators\n- **Flask**: Look for `@app.route()` decorators\n- **NestJS**: Look for `@Get()`, `@Post()`, `@Controller()` decorators\n- **Rails**: Look for routes in `config\u002Froutes.rb`\n\nUse Glob to find route files (e.g., `**\u002F*routes*.{js,ts,py}`, `**\u002Fcontrollers\u002F**\u002F*.{js,ts}`)\n\n### 2. Analyze Route Patterns\n\nFor each discovered route, extract:\n\n- **HTTP Method**: GET, POST, PUT, PATCH, DELETE\n- **Path**: The endpoint URL (e.g., `\u002Fapi\u002Fusers\u002F:id`)\n- **Parameters**: Path params, query params, request body\n- **Response**: Expected response structure\n- **Authentication**: Whether auth is required\n- **Description**: Comments or docstrings near the route\n\n### 3. Generate OpenAPI Specification\n\nCreate or update an OpenAPI 3.0 specification file (typically `openapi.yaml` or `swagger.json`):\n\n- Start with the template from `templates\u002Fopenapi-3.0.yaml`\n- Map each route to an OpenAPI path object\n- Define request\u002Fresponse schemas using JSON Schema\n- Include parameter definitions (path, query, body)\n- Add authentication schemes if detected (Bearer, API Key, OAuth2)\n- Group endpoints by tags (e.g., \"Users\", \"Products\", \"Auth\")\n\n### 4. Validate Completeness\n\nCheck that the generated documentation includes:\n\n- All discovered endpoints\n- Accurate HTTP methods and paths\n- Request\u002Fresponse examples where possible\n- Error responses (400, 401, 404, 500, etc.)\n- Security requirements\n\n### 5. Output Location\n\n- Save as `openapi.yaml` in the project root, or\n- Place in `docs\u002F` or `api\u002F` directory if those exist\n- Ask user for preferred location if unclear\n\n## Framework-Specific Notes\n\n### Express\u002FNode.js\n- Check for route middleware that might affect auth\u002Fvalidation\n- Look for request validators (Joi, express-validator, etc.)\n- Extract JSDoc comments for endpoint descriptions\n\n### FastAPI\n- FastAPI auto-generates OpenAPI docs, but this skill can enhance them\n- Extract Pydantic models for request\u002Fresponse schemas\n- Check for `response_model` and `status_code` parameters\n\n### NestJS\n- Look for DTOs (Data Transfer Objects) for schemas\n- Check for Swagger decorators (`@ApiOperation`, `@ApiResponse`)\n- Extract metadata from controller and method decorators\n\n## Best Practices\n\n1. **Use existing schemas**: If the codebase has TypeScript interfaces, Pydantic models, or similar, use them for accurate schemas\n2. **Include examples**: Add request\u002Fresponse examples from tests if available\n3. **Group logically**: Organize endpoints by resource or feature area using tags\n4. **Version appropriately**: Use the API version from the codebase (e.g., \"1.0.0\")\n5. **Add descriptions**: Use code comments\u002Fdocstrings for endpoint descriptions\n\n## Supporting Files\n\n- `templates\u002Fopenapi-3.0.yaml`: Base OpenAPI template\n- `examples.md`: Framework-specific examples\n",{"name":5,"description":7,"allowed-tools":52},"Read, Grep, Glob, Write, Edit","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Fcrazydubya\u002Fapi-documentation-generator",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill api-documentation-generator",{"tool":68,"command":69},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill api-documentation-generator",{"tool":71,"command":72},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill api-documentation-generator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fcrazydubya\u002Fapi-documentation-generator\u002FSKILL.md",true,[76,82,86,92,96],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"examples.md","REFERENCE","参考文档",7555,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fcrazydubya\u002Fapi-documentation-generator\u002Fexamples.md",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"manifest.json",1226,"https:\u002F\u002Fgithub.com\u002Flucastigrereal-dev\u002Fomnis-control\u002Fblob\u002Fmaster\u002Fskills\u002Fcreate_30_day_content_calendar\u002Fmanifest.json",{"path":87,"resourceType":88,"resourceTypeDesc":89,"sizeBytes":90,"sourceHtmlUrl":91},"run.py","SCRIPT","脚本",3589,"https:\u002F\u002Fgithub.com\u002Flucastigrereal-dev\u002Fomnis-control\u002Fblob\u002Fmaster\u002Fskills\u002Fcreate_30_day_content_calendar\u002Frun.py",{"path":93,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":94,"sourceHtmlUrl":95},"skill-report.json",14031,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fcrazydubya\u002Fapi-documentation-generator\u002Fskill-report.json",{"path":97,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":98,"sourceHtmlUrl":99},"templates\u002Fopenapi-3.0.yaml",2814,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Fcrazydubya\u002Fapi-documentation-generator\u002Ftemplates\u002Fopenapi-3.0.yaml",[101,113,123,132,138,145],{"skillNo":102,"name":103,"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":104,"categories":105,"keywords":109,"publishedAt":47},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[106],{"categoryNo":107,"categoryName":108,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[110,111,112],"model","model hierarchy","model hierarchy skill",{"skillNo":114,"name":115,"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":116,"categories":117,"keywords":119,"publishedAt":47},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[118],{"categoryNo":107,"categoryName":108,"taxonomyType":21,"taxonomyTypeDesc":22},[120,121,122],"MCP","zoom","zoom mcp",{"skillNo":124,"name":125,"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":126,"categories":127,"keywords":128,"publishedAt":47},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[129,130,131,121],"sdk","zoom apps sdk","apps",{"skillNo":133,"name":134,"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":135,"categories":136,"keywords":137,"publishedAt":47},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[134],{"skillNo":139,"name":140,"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":141,"categories":142,"keywords":144,"publishedAt":47},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[143],{"categoryNo":107,"categoryName":108,"taxonomyType":21,"taxonomyTypeDesc":22},[140],{"skillNo":146,"name":147,"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":148,"categories":149,"keywords":150,"publishedAt":47},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[147]]