forked from hyperlight-dev/hyperagent
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpptx.json
More file actions
52 lines (52 loc) · 2.16 KB
/
pptx.json
File metadata and controls
52 lines (52 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
{
"name": "pptx",
"description": "PowerPoint PPTX presentation builder - slides, text, shapes, themes, layouts",
"author": "system",
"mutable": false,
"sourceHash": "sha256:23569540a0f8622f",
"dtsHash": "sha256:27520514e4401465",
"importStyle": "named",
"hints": {
"overview": "Core PPTX slide building. Charts in ha:pptx-charts, tables in ha:pptx-tables.",
"relatedModules": [
"ha:pptx-charts",
"ha:pptx-tables",
"ha:ooxml-core",
"ha:image",
"ha:shared-state",
"ha:xml-escape",
"ha:zip-format"
],
"requiredPlugins": [
"fs-write"
],
"optionalPlugins": [
"fetch"
],
"criticalRules": [
"ALL slide functions need pres as FIRST parameter: titleSlide(pres, opts)",
"Charts are NOT in this module — import from ha:pptx-charts",
"Tables are NOT in this module — import from ha:pptx-tables",
"Shape builders return ShapeFragment objects — NEVER construct raw XML strings",
"customSlide shapes must be ShapeFragment or ShapeFragment[] — raw strings are rejected",
"Use getThemeNames() to see valid themes",
"DARK THEMES auto-handle contrast — don't use forceColor",
"Don't specify text color — theme auto-selects readable colours",
"Speaker notes are plain text only — max 12,000 chars, auto-sanitized"
],
"antiPatterns": [
"Don't store pres object in shared-state — use pres.serialize()",
"Don't write raw OOXML XML — use module shape builder functions",
"Don't concatenate ShapeFragment objects with + — pass as arrays",
"Don't call .toString() on chart results — use .shape property",
"Don't guess function names — call module_info first",
"series.name is REQUIRED for all chart data series"
],
"commonPatterns": [
"createPresentation({theme}) → add slides → exportToFile(pres, path, fsWrite)",
"pres.serialize() / restorePresentation() for cross-handler persistence",
"heroSlide for full-bleed images, statGridSlide for metrics, customSlide for complex layouts",
"Use layoutColumns(n, opts) for equal-width columns — never position manually"
]
}
}