File contents Schema to OpenAPI
Generate OpenAPI 3.0 specification from Synnovator's data schema.
Quick Start
uv run python .claude/skills/schema-to-openapi/scripts/generate_openapi.py
Output: .synnovator/openapi.yaml
Options
Flag
Default
Description
--output, -o
.synnovator/openapi.yaml
Output file path
--title
Synnovator API
API title
--version
1.0.0
API version
--format
yaml
Output format (yaml or json)
What Gets Generated
Content Type Endpoints (7 resources)
/events - Activity/competition management
/posts - User posts and submissions
/resources - File attachments
/rules - Event rules and scoring criteria
/users - User management
/groups - Teams and groups
/users/me - Current user profile
Nested Relation Endpoints
/events/{id}/rules - Event rules
/events/{id}/posts - Event submissions
/events/{id}/groups - Registered teams
/groups/{id}/members - Group membership
/posts/{id}/resources - Post attachments
/posts/{id}/related - Related posts
Interaction Endpoints (RESTful style)
POST/DELETE /posts/{id}/like - Like/unlike
GET/POST /posts/{id}/comments - Comments
GET/POST /posts/{id}/ratings - Ratings
Admin Batch Operations
DELETE /admin/posts - Batch delete
PATCH /admin/posts/status - Batch status update
PATCH /admin/users/role - Batch role update
Schema Normalization
Original (engine.py)
OpenAPI Spec
_body internal field
content field
deleted_at exposed
Hidden, use ?include_deleted=true
Cache fields
Marked readOnly: true
Scattered enums
Centralized in components/schemas
Integration with api-builder
After generating the spec:
# Generate OpenAPI spec
uv run python .claude/skills/schema-to-openapi/scripts/generate_openapi.py
# Use api-builder to scaffold backend
/api-builder .synnovator/openapi.yaml
Authentication
The generated spec uses OAuth2 with three scopes:
read - Read access to resources
write - Write access to resources
admin - Admin batch operations
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1 --- 2 name: h2oslabs-synnovatorzero-schema-to-openapi 3 description: Schema to OpenAPI 4 --- 5 6 # Schema to OpenAPI 7 8 Generate OpenAPI 3.0 specification from Synnovator's data schema. 9 10 ## Quick Start 11 12 ```bash 13 uv run python .claude/skills/schema-to-openapi/scripts/generate_openapi.py 14 ``` 15 16 Output: `.synnovator/openapi.yaml` 17 18 ## Options 19 20 | Flag | Default | Description | 21 |------|---------|-------------| 22 | `--output`, `-o` | `.synnovator/openapi.yaml` | Output file path | 23 | `--title` | `Synnovator API` | API title | 24 | `--version` | `1.0.0` | API version | 25 | `--format` | `yaml` | Output format (`yaml` or `json`) | 26 27 ## What Gets Generated 28 29 ### Content Type Endpoints (7 resources) 30 - `/events` - Activity/competition management 31 - `/posts` - User posts and submissions 32 - `/resources` - File attachments 33 - `/rules` - Event rules and scoring criteria 34 - `/users` - User management 35 - `/groups` - Teams and groups 36 - `/users/me` - Current user profile 37 38 ### Nested Relation Endpoints 39 - `/events/{id}/rules` - Event rules 40 - `/events/{id}/posts` - Event submissions 41 - `/events/{id}/groups` - Registered teams 42 - `/groups/{id}/members` - Group membership 43 - `/posts/{id}/resources` - Post attachments 44 - `/posts/{id}/related` - Related posts 45 46 ### Interaction Endpoints (RESTful style) 47 - `POST/DELETE /posts/{id}/like` - Like/unlike 48 - `GET/POST /posts/{id}/comments` - Comments 49 - `GET/POST /posts/{id}/ratings` - Ratings 50 51 ### Admin Batch Operations 52 - `DELETE /admin/posts` - Batch delete 53 - `PATCH /admin/posts/status` - Batch status update 54 - `PATCH /admin/users/role` - Batch role update 55 56 ## Schema Normalization 57 58 | Original (engine.py) | OpenAPI Spec | 59 |---------------------|--------------| 60 | `_body` internal field | `content` field | 61 | `deleted_at` exposed | Hidden, use `?include_deleted=true` | 62 | Cache fields | Marked `readOnly: true` | 63 | Scattered enums | Centralized in `components/schemas` | 64 65 ## Integration with api-builder 66 67 After generating the spec: 68 69 ```bash 70 # Generate OpenAPI spec 71 uv run python .claude/skills/schema-to-openapi/scripts/generate_openapi.py 72 73 # Use api-builder to scaffold backend 74 /api-builder .synnovator/openapi.yaml 75 ``` 76 77 ## Authentication 78 79 The generated spec uses OAuth2 with three scopes: 80 - `read` - Read access to resources 81 - `write` - Write access to resources 82 - `admin` - Admin batch operations 83 84 --- 85 > Converted and distributed by [TomeVault](https://tomevault.io/claim/h2oslabs) — claim your Tome and manage your conversions. 86 <!-- tomevault:4.0:skill_md:2026-04-15 -->
tomevault-io/skills-registry/tree/main/h2oslabs--synnovatorzero--schema-to-openapi commit e8887d7e79
Frequently asked questions How do I install the H2oslabs Synnovatorzero Schema To Openapi skill? Run npx skillmds@latest add tomevault-io/h2oslabs-synnovatorzero-schema-to-openapi in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
What does the H2oslabs Synnovatorzero Schema To Openapi skill do? Schema to OpenAPI It is listed under Coding & Dev Tools on SkillMD.
Is H2oslabs Synnovatorzero Schema To Openapi safe to use? This skill has not completed SkillMD's automated safety review yet. Independent scanners report: SkillSpector: CAUTION, Skill Scanner: PASS. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
Which AI agents work with H2oslabs Synnovatorzero Schema To Openapi? This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Is H2oslabs Synnovatorzero Schema To Openapi free to use? Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
Who published H2oslabs Synnovatorzero Schema To Openapi? tomevault-io (@tomevault-io) published this skill. Their other Agent Skills are listed on their SkillMD profile.