mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-09-05 20:03:43 +08:00
feat: 内置技能全量收录 presentation-forge (#83)
## 概述
将 PPT 工作流技能 **presentation-forge**(原 codex-ppt-skill)以 **builtin
内置技能**形态全量收录进 DesireCore 官方市场。
> 注:本 PR 最初以 entry.json pointer 形态提交,现按仓库负责人意见改为 builtin 层全量
vendoring。分支保留两个提交(pointer → builtin 转换)。
## 形态:builtin 全量 vendoring(遵循 guizang-ppt 先例)
- 全量内容进 `skills/presentation-forge/`:`SKILL.md` + `SKILL.zh-CN.md` +
`references/` + `scripts/` + `styles/`(9 套风格)+ `templates/` +
`schemas/`。
- builtin frontmatter:`version/type/risk_level/status/tags` +
`metadata.i18n`(zh-CN/en-US)+
`market.icon/category/maintainer`,`category: creative`。
- 列入 `builtin-skills.json`(33 项)。
- 附 `LICENSE`(MIT)+ `NOTICE.md` +
`_desirecore/{frontmatter.yaml,upstream.json}` 溯源。
- 溯源 commit:`mashagua/presentation-forge@b7b1a9c`(MIT)。
- 排除非运行内容:`tests/` 夹具、未被任何 vendored 文件引用的 1.3MB 流程图、Codex `agents/` 绑定。
## 变更
- 新增 `skills/presentation-forge/`(全量内容,约 440KB)
- `builtin-skills.json`:新增 `presentation-forge`(32 → 33)
- `manifest.json`:`stats.totalSkills` 60 → 61,`version` 1.2.26 →
1.2.27,`lastUpdated` → 2026-08-10
- `README.md`:built-in 32 → 33、external 29 → 28、total 61 不变,两处代码块同步
## 验证
```
uv run scripts/i18n/validate-i18n.py
OK: no i18n issues found.
```
stats 公式核对:entry.json 目录 28 + SKILL.md 目录 33 = 61 = manifest.totalSkills
✓
---------
Co-authored-by: Yige <a@wyr.me>
Co-authored-by: yige <yige@yigedeMacBook-Neo.local>
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://local.codex/presentation-forge/editor-manifest.schema.json",
|
||||
"title": "Presentation Forge Editor Manifest",
|
||||
"type": "object",
|
||||
"required": ["schema_version", "protocol", "session_id", "document_kind", "editable_document", "document_sha256", "canvas_sha256", "workflow", "current_style", "style_catalog", "slides", "slide_count", "capabilities"],
|
||||
"properties": {
|
||||
"schema_version": {"const": 3},
|
||||
"protocol": {"const": "presentation-forge-editor.v3"},
|
||||
"session_id": {"type": "string"},
|
||||
"base_revision": {"type": ["string", "null"]},
|
||||
"route": {"type": ["string", "null"]},
|
||||
"document_kind": {"const": "native-editable-deck"},
|
||||
"editable_document": {"type": "string"},
|
||||
"document_sha256": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
|
||||
"canvas_sha256": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
|
||||
"workflow": {
|
||||
"type": "object",
|
||||
"required": ["mode", "style_selection_status", "export_approval", "final_pptx_ready"],
|
||||
"properties": {
|
||||
"mode": {"enum": ["direct-build", "canvas-first"]},
|
||||
"style_selection_status": {"enum": ["pending", "auto-selected", "confirmed"]},
|
||||
"export_approval": {"enum": ["pending", "auto-proceed", "approved"]},
|
||||
"final_pptx_ready": {"type": "boolean"}
|
||||
}
|
||||
},
|
||||
"global_editable_paths": {"type": "array", "items": {"type": "string"}},
|
||||
"current_style": {"type": "object", "required": ["style_id", "variant_id", "family_name", "name"]},
|
||||
"style_catalog": {"type": "array", "minItems": 24, "items": {"type": "object", "required": ["preset_id", "style_id", "variant_id", "family_name", "name", "design_tokens"]}},
|
||||
"slide_count": {"type": "integer", "minimum": 1},
|
||||
"slides": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["slide_number", "title", "scene", "editable_paths", "canvas", "elements"],
|
||||
"properties": {
|
||||
"slide_number": {"type": "integer", "minimum": 1},
|
||||
"title": {"type": "string"},
|
||||
"archetype": {"type": ["string", "null"]},
|
||||
"style": {"type": "object", "required": ["style_id", "variant_id"]},
|
||||
"scene": {"type": "string"},
|
||||
"thumbnail": {"type": ["string", "null"]},
|
||||
"editable_paths": {"type": "array", "items": {"type": "string"}},
|
||||
"canvas": {"type": "object"},
|
||||
"elements": {"type": "array"}
|
||||
}
|
||||
}
|
||||
},
|
||||
"capabilities": {"type": "object"},
|
||||
"events": {"type": "string"}
|
||||
}
|
||||
}
|
||||
62
skills/presentation-forge/schemas/editor-patch.schema.json
Normal file
62
skills/presentation-forge/schemas/editor-patch.schema.json
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://local.codex/presentation-forge/editor-patch.schema.json",
|
||||
"title": "Presentation Forge Editor Patch",
|
||||
"type": "object",
|
||||
"required": ["schema_version", "request_id", "base_revision", "document_sha256", "canvas_sha256", "operations"],
|
||||
"properties": {
|
||||
"schema_version": {"const": 3},
|
||||
"request_id": {"type": "string", "minLength": 1},
|
||||
"base_revision": {"type": ["string", "null"]},
|
||||
"document_sha256": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
|
||||
"canvas_sha256": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
|
||||
"operations": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"required": ["op", "path", "value"],
|
||||
"properties": {"op": {"const": "replace"}, "path": {"type": "string", "pattern": "^/"}, "value": {}}
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"required": ["op", "slide_number", "element_id", "changes"],
|
||||
"properties": {
|
||||
"op": {"const": "update-element"},
|
||||
"slide_number": {"type": "integer", "minimum": 1},
|
||||
"element_id": {"type": "string", "minLength": 1},
|
||||
"changes": {
|
||||
"type": "object",
|
||||
"minProperties": 1,
|
||||
"properties": {
|
||||
"bbox": {"type": "array", "minItems": 4, "maxItems": 4, "items": {"type": "number"}},
|
||||
"text": {"type": "string"},
|
||||
"style": {"type": "object"},
|
||||
"rotation": {"type": "number"},
|
||||
"z_index": {"type": "integer", "minimum": 0}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"required": ["op", "scope", "style_id", "variant_id", "mode"],
|
||||
"properties": {
|
||||
"op": {"const": "apply-style"},
|
||||
"scope": {"enum": ["deck", "slide"]},
|
||||
"slide_number": {"type": "integer", "minimum": 1},
|
||||
"style_id": {"type": "string", "minLength": 1},
|
||||
"variant_id": {"type": "string", "minLength": 1},
|
||||
"mode": {"enum": ["replace-theme", "preserve-layout"]}
|
||||
},
|
||||
"allOf": [
|
||||
{"if": {"properties": {"scope": {"const": "slide"}}}, "then": {"required": ["slide_number"]}}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://local.codex/presentation-forge/native-editable-deck.schema.json",
|
||||
"title": "Native Editable Deck Spec",
|
||||
"type": "object",
|
||||
"required": ["schema_version", "title", "style_id", "visual_asset_policy", "slides"],
|
||||
"properties": {
|
||||
"schema_version": {"const": 1},
|
||||
"title": {"type": "string", "minLength": 1},
|
||||
"style_id": {"type": "string", "minLength": 1},
|
||||
"style_variant": {"type": ["string", "null"]},
|
||||
"typography_profile": {"type": ["string", "null"]},
|
||||
"table_profile": {"type": ["string", "null"]},
|
||||
"visual_asset_policy": {"enum": ["native-only", "native-image-assisted", "image-led-editable"]},
|
||||
"design_exceptions": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["code", "slide_number", "reason"],
|
||||
"properties": {
|
||||
"code": {"type": "string", "minLength": 1},
|
||||
"slide_number": {"type": "integer", "minimum": 1},
|
||||
"reason": {"type": "string", "minLength": 8}
|
||||
}
|
||||
}
|
||||
},
|
||||
"slides": {
|
||||
"type": "array",
|
||||
"minItems": 1,
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["slide_number", "archetype", "title"],
|
||||
"properties": {
|
||||
"slide_number": {"type": "integer", "minimum": 1},
|
||||
"archetype": {"enum": ["cover", "content-structured", "process-flow", "comparison-two-zone", "data-callouts", "table", "architecture", "closing-action"]},
|
||||
"title": {"type": "string", "minLength": 1},
|
||||
"style_id": {"type": "string", "minLength": 1},
|
||||
"style_variant": {"type": "string", "minLength": 1},
|
||||
"key_message": {"type": "string"},
|
||||
"visual_slot": {
|
||||
"type": "object",
|
||||
"required": ["backend", "source_type", "status", "asset_path"],
|
||||
"properties": {
|
||||
"backend": {"enum": ["image-2", "provided"]},
|
||||
"source_type": {"enum": ["imagegen_asset", "provided_asset"]},
|
||||
"status": {"enum": ["planned", "pending_user_generation", "generated", "validated", "blocked"]},
|
||||
"asset_path": {"type": "string"},
|
||||
"prompt_record": {"type": ["string", "null"]},
|
||||
"bbox_in": {"type": "array", "minItems": 4, "maxItems": 4, "items": {"type": "number"}}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
80
skills/presentation-forge/schemas/scene.schema.json
Normal file
80
skills/presentation-forge/schemas/scene.schema.json
Normal file
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://local.codex/presentation-forge/scene.schema.json",
|
||||
"title": "PPT Page Scene",
|
||||
"type": "object",
|
||||
"required": ["schema_version", "slide_id", "slide_number", "revision", "page_type", "canvas", "content", "elements", "dependencies"],
|
||||
"properties": {
|
||||
"schema_version": {"const": 2},
|
||||
"slide_id": {"type": "string", "pattern": "^slide-[0-9]{3}$"},
|
||||
"slide_number": {"type": "integer", "minimum": 1},
|
||||
"revision": {"type": "integer", "minimum": 1},
|
||||
"page_type": {"type": "string"},
|
||||
"style_id": {"type": ["string", "null"]},
|
||||
"style_variant": {"type": ["string", "null"]},
|
||||
"layout_id": {"type": ["string", "null"]},
|
||||
"typography_profile": {"type": ["string", "null"]},
|
||||
"table_profile": {"type": ["string", "null"]},
|
||||
"visual_asset_policy": {"enum": ["native-only", "native-image-assisted", "image-led-editable", null]},
|
||||
"canvas": {
|
||||
"type": "object",
|
||||
"required": ["width", "height", "unit"],
|
||||
"properties": {"width": {"type": "integer", "minimum": 1}, "height": {"type": "integer", "minimum": 1}, "unit": {"const": "px"}}
|
||||
},
|
||||
"content": {
|
||||
"type": "object",
|
||||
"required": ["title"],
|
||||
"properties": {"title": {"type": "string"}, "message": {"type": "string"}, "facts": {"type": "array"}}
|
||||
},
|
||||
"generation": {"type": "object"},
|
||||
"elements": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"required": ["id", "type", "bbox", "rotation", "z_index", "editable", "locked", "capabilities", "style"],
|
||||
"properties": {
|
||||
"id": {"type": "string", "minLength": 1},
|
||||
"type": {"enum": ["text", "shape", "line", "connector", "image", "chart", "table", "group", "layout_native", "line_native", "connector_native", "semantic_visual", "imagegen_asset", "provided_asset", "unresolved"]},
|
||||
"editable": {"type": "boolean"},
|
||||
"locked": {"type": "boolean"},
|
||||
"bbox": {"type": "array", "minItems": 4, "maxItems": 4, "prefixItems": [{"type": "number", "minimum": 0}, {"type": "number", "minimum": 0}, {"type": "number", "exclusiveMinimum": 0}, {"type": "number", "exclusiveMinimum": 0}]},
|
||||
"rotation": {"type": "number"},
|
||||
"z_index": {"type": "integer", "minimum": 0},
|
||||
"role": {"type": ["string", "null"]},
|
||||
"geometry": {"type": "string"},
|
||||
"text": {"type": "string"},
|
||||
"capabilities": {"type": "array", "uniqueItems": true, "items": {"enum": ["text", "geometry", "style", "rotation", "z-order", "asset"]}},
|
||||
"style": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"fill": {"type": "string", "pattern": "^[A-Fa-f0-9]{6}$"},
|
||||
"line": {"type": "string", "pattern": "^[A-Fa-f0-9]{6}$"},
|
||||
"line_width_pt": {"type": "number", "minimum": 0},
|
||||
"font_size_pt": {"type": "number", "exclusiveMinimum": 0},
|
||||
"font_family": {"type": "string"},
|
||||
"font_color": {"type": "string", "pattern": "^[A-Fa-f0-9]{6}$"},
|
||||
"bold": {"type": "boolean"},
|
||||
"align": {"enum": ["left", "center", "right", "justify"]},
|
||||
"vertical_align": {"enum": ["top", "middle", "bottom"]},
|
||||
"line_spacing": {"type": "number", "exclusiveMinimum": 0}
|
||||
}
|
||||
},
|
||||
"source_binding": {
|
||||
"type": "object",
|
||||
"required": ["document", "path"],
|
||||
"properties": {"document": {"type": "string"}, "path": {"type": "string", "pattern": "^/"}}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"type": "object",
|
||||
"required": ["scene_hash", "prompt_hash", "asset_hashes"],
|
||||
"properties": {
|
||||
"scene_hash": {"type": "string"},
|
||||
"prompt_hash": {"type": "string"},
|
||||
"asset_hashes": {"type": "array", "items": {"type": "string"}}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user