blocks-schema-evolution
Use when an existing EmDash site needs a new block type, changed block fields, retained-version activation, or explicit block-content migration.
来源信息
- 仓库
- emdash-cms/emdash-build
- 最近来源活动
- 2026年9月28日 12:40
- 检测到的 SKILL.md 语言
- 英语
- 星标
- 77
- 分支
- 5
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- name
- blocks-schema-evolution
- description
- Use when an existing EmDash site needs a new block type, changed block fields, retained-version activation, or explicit block-content migration.
# Safe blocks schema evolution
Use EmDash's core versioning tools; do not implement fingerprints, versions, keys, compatibility checks, or migration logic in site source.
- For a genuinely new section, create the type with a block-only `apply_schema_plan`, update the field through `update_blocks_field`, refresh and read generated declarations, create its typed dispatcher/version files and canonical map entry, validate, then add content.
- Before updating a definition, call `schema_get_block_type`, submit the complete desired field array rather than a field patch, and pass the active version's `fingerprint` as `expectedFingerprint`.
- A compatible change takes effect immediately. Inspect the returned `currentVersion` and versions, refresh types, update its renderer, validate, and only then use the new optional capability. Defaults do not backfill stored blocks.
- For a potentially breaking update, submit the complete desired fields with `breaking: true`. Core decides compatibility. If it creates an inactive version, refresh types, add exhaustive old/new `vN.astro` renderers, run `validate_site`, then activate with the still-active old fingerprint.
- Activation never migrates content. If discovery is incomplete, stop and report it. Otherwise migrate each reported entry from a fresh raw `content_get`: preserve `_key`, order, untouched values and `_rev`, send the complete target shape with the active `_version`, set `migrateBlocks: true`, and do not set `replaceBlocks`.
- Report raced or conflicted entries honestly and revalidate after migration. Never blindly restore an older blocks array over concurrent changes.
在 GitHub 查看