返回 ppt-master
design_spec.schema.json
根目录 / skills / ppt-master / templates / schemas / design_spec.schema.json
1 {
2 "$schema": "https://json-schema.org/draft/2020-12/schema",
3 "$id": "ppt-master://schemas/design-spec/v1",
4 "title": "PPT Master design_spec.md",
5 "description": "Schema for the Markdown section model emitted by the design-spec parser.",
6 "type": "object",
7 "required": [
8 "project_information",
9 "canvas_specification",
10 "visual_theme",
11 "typography_system",
12 "layout_principles",
13 "icon_usage",
14 "image_resource_list",
15 "content_outline",
16 "speaker_notes"
17 ],
18 "properties": {
19 "project_information": {"type": "string", "minLength": 1},
20 "canvas_specification": {"type": "string", "minLength": 1},
21 "visual_theme": {"type": "string", "minLength": 1},
22 "typography_system": {"type": "string", "minLength": 1},
23 "layout_principles": {"type": "string", "minLength": 1},
24 "icon_usage": {"type": "string", "minLength": 1},
25 "visualization_reference": {"type": "string"},
26 "image_resource_list": {"type": "string"},
27 "content_outline": {"type": "string", "minLength": 1},
28 "speaker_notes": {"type": "string", "minLength": 1}
29 },
30 "x-markdown": {
31 "version": 1,
32 "marker": "design-spec/v1",
33 "parser": "heading-sections-v1",
34 "unresolved_patterns": ["(?i)\\[fill(?:[^\\]]*)\\]"],
35 "section_order": [
36 "project_information",
37 "canvas_specification",
38 "visual_theme",
39 "typography_system",
40 "layout_principles",
41 "icon_usage",
42 "visualization_reference",
43 "image_resource_list",
44 "content_outline",
45 "speaker_notes"
46 ],
47 "sections": [
48 {"id": "project_information", "pattern": "^I\\. Project Information$", "required": true, "min_body_chars": 1},
49 {"id": "canvas_specification", "pattern": "^II\\. Canvas Specification$", "required": true, "min_body_chars": 1},
50 {"id": "visual_theme", "pattern": "^III\\. Visual Theme$", "required": true, "min_body_chars": 1},
51 {"id": "typography_system", "pattern": "^IV\\. Typography System$", "required": true, "min_body_chars": 1},
52 {"id": "layout_principles", "pattern": "^V\\. Layout Principles$", "required": true, "min_body_chars": 1},
53 {"id": "icon_usage", "pattern": "^VI\\. Icon Usage Specification$", "required": true, "min_body_chars": 1},
54 {
55 "id": "visualization_reference",
56 "pattern": "^VII\\. Visualization Reference List(?: \\(if needed\\))?$",
57 "required": false
58 },
59 {
60 "id": "image_resource_list",
61 "pattern": "^VIII\\. Image Resource List(?: \\(if needed\\))?$",
62 "required": true
63 },
64 {"id": "content_outline", "pattern": "^IX\\. Content Outline$", "required": true, "min_body_chars": 1},
65 {
66 "id": "speaker_notes",
67 "pattern": "^X\\. Speaker Notes (?:Requirements|Plan|Strategy)$",
68 "required": true,
69 "min_body_chars": 1
70 }
71 ],
72 "conditions": [
73 {
74 "id": "ai-image-strategy",
75 "when": {
76 "section": "image_resource_list",
77 "body_regex": "(?im)^\\|[^\\n]*\\|\\s*ai\\s*\\|"
78 },
79 "then": {
80 "required_subheadings": [
81 {"section": "visual_theme", "heading": "AI Image Strategy"}
82 ]
83 }
84 }
85 ],
86 "slides": {
87 "section": "content_outline",
88 "heading_pattern": "^Slide[ \\t]+(?:[0-9]+|NN)\\b",
89 "required_fields": ["Audience move"]
90 }
91 }
92 }
93
93 lines JSON