# Ezorm Write YAML Mongo

> Write ezorm YAML schema files for this repo (mongo only). Use when asked to define or update ezorm YAML for mongo collections, fields, indexes, flags, embeds, or relations; output YAML only (no Go code). Use when this capability is needed.

- Skill: `tomevault-io/ezorm-write-yaml-mongo` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/ezorm-write-yaml-mongo`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/ezorm-write-yaml-mongo/raw
- Safety review: pending (external: skill-scanner PASS, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/ezorm-write-yaml-mongo

---


# Ezorm Write Yaml

## Scope

Write ezorm YAML schemas from user requirements for mongo and emit YAML only.
Read these files when schema details or examples are needed:
- `doc/schema/yaml.md`
- `doc/schema/yaml_mongo.md`
- `e2e/mongo/*.yaml`
If the local `references/` or `assets/` directories are missing, run:
`scripts/init.sh` (or `scripts/init.sh --force` to refresh).
Validate with `scripts/validate.sh`.

## Workflow

1. Restate the domain model in simple entities and relationships. Ask one clarification only if critical (missing entities, relationship direction, or required constraints).
2. Choose representation:
   - Embedded structure: define a separate entity with `embed: true` and reference it with `list<EmbedType>` or `EmbedType` fields.
   - Separate collection: define separate entities and connect via ID fields.
3. Map fields:
   - Use mongo field types from `doc/schema/yaml_mongo.md`.
   - Add `flags` like `index`, `unique`, `sort`, `nullable` as needed.
   - Use `attrs` with `bsonTag`/`jsonTag` only when a specific storage name is requested.
4. Set collection metadata:
   - Always include `table` and `dbname`.
   - Default `table` to snake_case of the entity name.
   - Default `dbname` to `default` unless the user provides one.
5. Add constraints:
   - Use `indexes`, `uniques`, `primary` as required.
6. Output only YAML (no Go code, no prose). Use `---` to separate multiple entities.

## Output Rules

- Emit a valid YAML schema file (or multiple YAML documents) and nothing else.
- Keep names consistent with user domain language.
- Prefer minimal fields; do not invent behavior.

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/ezbuy) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

